在matlab中将libsvm安装完成后,就可以来尝试用一下啦。详细用法可以看文件夹中的README文件,这里主要介绍两个函数svmtrain()和svmpredict()。
svmtrain用法:
model = svmtrain(train_label, train_matrix, ['libsvm_options']); 根据输入的训练样本建立一个模型,该模型用来进行predict
train_label: 一个m*1的矢量,存着label值,矢量中数值类型必须为double型。
所谓label即为分类的类别,train_matrix中的各行数据分别对应着train_label中相应行的一个label值,表示本行中的特征值属于label值标注的这一类。
train_matrix: 一个m*n的矩阵,数值类型也必须为double型。每一行都存着一组n维特征值向量,每一行表示一个样本,每一列表示一种特征。
libsvm_options: 调整参数生成不同的model可以影响svmpredict的准确率
-c cost 对于错分的惩罚参数
-g gama 核函数的参数之一
svmpredict用法:
[predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(test_label, test_matrix, model, ['libsvm_options'']);
predicted_label: 预测的标签,可以用来与test_label比对,从而计算准确率accuracy。decision_values/prob_estimates用于回归问题,分类问题中用不到。
test_label: 测试集用的标签,若没有则输入任意随机值。
test_matrix: 测试数据
model: svmtrain生成的模型
遇到的问题:
按网上教程使用命令[predicted_label, accuracy] = svmpredict(test_label, test_matrix, model),结果提示用法不正确,后来改成[predicted_label, accuracy, decision_values] = svmpredict(test_label, test_matrix, model)即可得到正确结果,估计是libsvm版本更新后最后一个返回值不能省略了。