本文共 2360 字,大约阅读时间需要 7 分钟。
-------据说直接将 libsvm-3.21\ windows目录添加到工作路径下即可(点击 set path/设置路径)------ (1)将工具包放到任何地方均可,将工具包目录(libsvm-3.21主目录)添加到Matlab的搜索路径。Set Path->add with subfolders->save
(3)工作目录进入到libsvm-3.21/matlab,然后命令行输入:make
clear;
[label_vector, instance_matrix] =libsvmread('heart_scale');
model = svmtrain(label_vector, instance_matrix);
[predicted_label, accuracy, prob_estimates] = svmpredict(label_vector, instance_matrix, model, 'b');
(可能会有的5)如果出现Invalid MEX-file 'xxxxxxwindows\libsvmread.mexw64': 找不到指定的模块。
就把matlab下的mex文件复制到windows下全部替换即可。
然后会得到正确的测试结果(是对根目录下的heart_scale进行的分析):
*
optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
nSV = 132, nBSV = 107
Total nSV = 132
Accuracy = 86.6667% (234/270) (classification)
P=[ 1.2587 3.0761 5.7015 6.1477 15.1897 7.7739 14.2143;
1.2571 3.0689 5.6749 6.1243 12.1949 7.7471 14.1543;
1.2500 3.0573 5.5977 6.0389 12.1936 7.6527 13.9888;
1.2614 3.0766 5.7234 6.2063 12.4628 7.8395 14.2903;
1.2286 2.9109 6.9023 6.9904 14.1145 8.4769 16.7414;
1.2302 2.9137 7.0011 7.0589 14.3808 8.5464 16.9477;
1.2196 2.8861 6.8574 6.9408 17.1837 8.4172 16.7242;
1.2330 2.9174 7.1085 7.0621 19.4943 8.5501 17.7029;
1.4921 3.7987 7.7451 9.6659 21.4369 11.9287 19.6565;
1.4874 3.7724 7.7934 9.6719 18.4340 11.9552 19.6265;
1.4897 3.7882 7.7478 9.7091 18.7744 12.0021 19.5958;
1.4985 3.8281 7.8391 9.7699 20.2503 11.9822 20.0870];
%因变量向量T,可以看到有3种不同的结果-1 0 1
T=[-1;-1;-1;-1;0;0;0;0;1;1;1;1];
model=svmtrain(T,P,'-c 1 -g 2');
P_test=[1.2623 3.0930 5.7050 6.1484 12.0869 7.7779 14.1668;
1.2368 2.9332 6.9929 7.1641 18.2425 8.6719 16.9154;
1.4915 3.7762 7.8288 9.6141 18.6441 11.8890 19.4717];
[predict_label, accuracy, dec_values] = svmpredict(T_test, P_test, model);
optimization finished, #iter = 14
obj = -2.593508, rho = 0.204546
optimization finished, #iter = 15
obj = -2.562849, rho = 0.186915
optimization finished, #iter = 14
obj = -3.083852, rho = -0.015390
Accuracy = 100% (3/3) (classification)
一个重要的PS: 当测试集没有预定结果的时候,也就是说,我们只是想用模型对一堆特征集分类而不是验证模型准确度时,将T置为任意值(但长度需要对应上特征集的大小)即可。
这时打印predict_label就会显示分类器输出的分类结果。
转载地址:http://xvcws.baihongyu.com/