您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > MATALB中SVM工具箱快速入手简易教程(常出现的错误解决办法)
MATALB中SVM工具箱快速入手简易教程(常出现的错误解决办法)——胡matlab自带的函数(matlab帮助文件里的例子)[只有较新版本的matlab中有这两个SVM的函数](本人使用的是2012版本)svmtrainsvmclassify=====简要语法规则====svmtrainTrainsupportvectormachineclassifierSyntaxSVMStruct=svmtrain(Training,Group)SVMStruct=svmtrain(...,'Kernel_Function',Kernel_FunctionValue,...)SVMStruct=svmtrain(...,'RBF_Sigma',RBFSigmaValue,...)SVMStruct=svmtrain(...,'Polyorder',PolyorderValue,...)SVMStruct=svmtrain(...,'Mlp_Params',Mlp_ParamsValue,...)SVMStruct=svmtrain(...,'Method',MethodValue,...)SVMStruct=svmtrain(...,'QuadProg_Opts',QuadProg_OptsValue,...)SVMStruct=svmtrain(...,'SMO_Opts',SMO_OptsValue,...)SVMStruct=svmtrain(...,'BoxConstraint',BoxConstraintValue,...)SVMStruct=svmtrain(...,'Autoscale',AutoscaleValue,...)SVMStruct=svmtrain(...,'Showplot',ShowplotValue,...)---------------------svmclassifyClassifydatausingsupportvectormachineSyntaxGroup=svmclassify(SVMStruct,Sample)Group=svmclassify(SVMStruct,Sample,'Showplot',ShowplotValue)实例操作:在命令行中输入一下内容:(或者新建一个脚本文件)警告:如果你之前安装过libsvm工具箱,则一下程序是不能执行的,并且会出现错误(如下图)。出现错误的原因及解决办法:原因:当函数运行时调用的svmtrainsvmclassify是你安装的libsvm中的函数并不是MATLAB自带的。解决办法:将安装时加载的libsvm的路径暂时移除。打开setpath,remove所有惯有libsvm的路径,save!OK!loadfisheriris%载入matlab自带的数据[有关数据的信息可以自己到UCI查找,这是UCI的经典数据之一],得到的数据如下图:tu1其中meas是150*4的矩阵代表着有150个样本每个样本有4个属性描述,species代表着这150个样本的分类.data=[meas(:,1),meas(:,2)];%在这里只取meas的第一列和第二列,即只选取前两个属性.groups=ismember(species,'setosa');%由于species分类中是有三个分类:setosa,versicolor,virginica,为了使问题简单,我们将其变为二分类问题:Setosaandnon-Setosa.[train,test]=crossvalind('holdOut',groups);cp=classperf(groups);%随机选择训练集合测试集[有关crossvalind的使用请自己help一下]其中cp作用是后来用来评价分类器的.svmStruct=svmtrain(data(train,:),groups(train),'showplot',true);%使用svmtrain进行训练,得到训练后的结构svmStruct,在预测时使用.训练结果如图:tu2classes=svmclassify(svmStruct,data(test,:),'showplot',true);%对于未知的测试集进行分类预测,结果如图:tu3classperf(cp,classes,test);cp.CorrectRateans=0.9867%分类器效果测评,就是看测试集分类的准确率的高低.以上就是用MATLAB自带函数分类的方法!使用libsvm工具箱安装方法也很简单,解压文件,把当前工作目录调整到libsvm所在的文件夹下,再在setpath里将libsvm所在的文件夹加到里面.然后在命令行里输入mex-setup%选择一下编译器make这样就可以了.建议大家使用libsvm工具箱,这个更好用一些.可以进行分类[多类别],预测....=========svmtrainsvmpredict================Usage=====matlabmodel=svmtrain(training_label_vector,training_instance_matrix[,'libsvm_options']);-training_label_vector:Anmby1vectoroftraininglabels(typemustbedouble).-training_instance_matrix:Anmbynmatrixofmtraininginstanceswithnfeatures.Itcanbedenseorsparse(typemustbedouble).-libsvm_options:AstringoftrainingoptionsinthesameformatasthatofLIBSVM.matlab[predicted_label,accuracy,decision_values/prob_estimates]=svmpredict(testing_label_vector,testing_instance_matrix,model[,'libsvm_options']);-testing_label_vector:Anmby1vectorofpredictionlabels.Iflabelsoftestdataareunknown,simplyuseanyrandomvalues.(typemustbedouble)-testing_instance_matrix:Anmbynmatrixofmtestinginstanceswithnfeatures.Itcanbedenseorsparse.(typemustbedouble)-model:Theoutputofsvmtrain.-libsvm_options:AstringoftestingoptionsinthesameformatasthatofLIBSVM.ReturnedModelStructure========================实例研究:loadheart_scale.mat%工具箱里自带的数据tu4其中heart_scale_inst是样本,heart_scale_label是样本标签model=svmtrain(heart_scale_label,heart_scale_inst,'-c1-g0.07');%训练样本,具体参数的调整请看帮助文件[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);%分类预测,这里把训练集当作测试集,验证效果如下:[predict_label,accuracy,dec_values]=svmpredict(heart_scale_label,heart_scale_inst,model);%testthetrainingdataAccuracy=86.6667%(234/270)(classification)关于下载安装可在网上自行搜索这些都不是难事!OK!
本文标题:MATALB中SVM工具箱快速入手简易教程(常出现的错误解决办法)
链接地址:https://www.777doc.com/doc-2881831 .html