1. LibSVM下载,安装
下载地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/,最新的版本是3.17
2. 入门
- [heart_scale_label,heart_scale_inst]=libsvmread('heart_scale'); % 导入数据
- model = svmtrain(heart_scale_label,heart_scale_inst, '-c 1 -g 0.07'); % 训练模型
- [predict_label, accuracy, dec_values] =svmpredict(heart_scale_label, heart_scale_inst, model); % 测试
注意:
(1)下载解压后文件夹中的heart_scale,是VC++格式的,不能直接load, 否则会报错!
需要使用转换函数libsvmread(),其格式如下: [label_vector, instance_matrix] = libsvmread('filename');
所以导入数据的命令为:[heart_scale_label,heart_scale_inst] = libsvmread('heart_scale');
或者直接下载mat格式的数据,保存到当前目录下。下载地址:http://pan.baidu.com/s/1sj8l6ax
(2)在新版的matlab中,也有自带的SVM实现,函数名也是svmtrain. 为了避免冲突,可以将其备份后改名,比如改为svmtrain_backup.m.
文件的位置在:D:Program FilesMATLABR2012a oolboxioinfoiolearningsvmtrain.m
(3)进行分类测试时,网络上许多教程中提到的 [predict_label, accuracy] = svmpredict(heart_scale_label, heart_scale_inst, model); 在最新的3.17版本中会出错,提示使用的语法格式为:Usage: [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options');或者 [predicted_label] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options')
所以正确的用法应该是:
- [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);
或者:
- [predicted_label] = svmpredict(heart_scale_label, heart_scale_inst, model);
得到下面的结果,则说明测试成功!
Accuracy = 86.6667% (234/270) (classification)