matlab里用Libsvm得到模型但是无法得到预测精度

Libsvm得到模型但是无法得到预测精度,各位大神帮帮忙,急!!!
>> model=svmtrain(heart_scale_label,heart_scale_inst);
*
optimization finished, #iter = 162
nu = 0.431029
obj = -100.877288, rho = 0.424462
nSV = 132, nBSV = 107
Total nSV = 132
>> [predict_label,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model)
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')
Parameters:
model: SVM model structure from svmtrain.
libsvm_options:
-b probability_estimates: whether to predict probability estimates, 0 or 1 (default 0); one-class SVM not supported yet
-q : quiet mode (no outputs)
Returns:
predicted_label: SVM prediction output vector.
accuracy: a vector with accuracy, mean squared error, squared correlation coefficient.
prob_estimates: If selected, probability estimate vector.

predict_label =

[]

accuracy =

[]

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')

因此,你要么返回一个predicted_label,要么返回三个。所以程序改成:

 [predict_label,accuracy, decision_values]=svmpredict(heart_scale_label,heart_scale_inst,model)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-20

LibSVM的预测精度是通过svmpredict函数计算出来的。

支持向量机方法是一个超平面,或在一个高维或者无限维空间里对在低维线性空间中不可分的类别进行分类。

在机器学习中,支持向量机(SVM,还支持矢量网络)是与相关的学习算法有关的监督学习模型,可以分析数据,识别模式,用于分类和回归分析。给定一组训练样本,每个标记为属于两类,一个SVM训练算法建立了一个模型,分配新的实例为一类或其他类,使其成为非概率二元线性分类。一个SVM模型的例子,如在空间中的点,映射,使得所述不同的类别的例子是由一个明显的差距是尽可能宽划分的表示。新的实施例则映射到相同的空间中,并预测基于它们落在所述间隙侧上属于一个类别。

所以在你仅仅是建立了模型之后你还无法获得精度的,必须借由预测样本,对模型的准确度进行检验。

model = svmtrain(heart_scale_label,heart_scale_inst);  
[predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);

第2个回答  2015-11-10
详细参见http://blog.163.com/crazyzcs@126/blog/static/129742050201061192243911/
http://blog.csdn.net/lqhbupt/article/details/8596349
svmtrain函数相关参数说明
svmtrain函数返回的model可以用来对测试数据集进行预测。这是一个结构体变量,主要包括了以下几个域。[Parameters, nr_class, totalSV, rho, Label, ProbA, ProbB, nSV,sv_coef, SVs]。英文说明如下:
-Parameters: parameters
-nr_class: number of classes; = 2 for regression/one-class svm
-totalSV: total #SV
-rho: -b of the decision function(s) wx+b
-Label: label of each class; empty for regression/one-class SVM
-ProbA: pairwise probability information; empty if -b 0 or in one-classSVM
-ProbB: pairwise probability information; empty if -b 0 or in one-classSVM
-nSV: number of SVs for each class; empty for regression/one-class SVM
-sv_coef: coefficients for SVs in decision functions
-SVs: support vectors
如果没有指定’-b 1’选项则ProbA和ProbB为空矩阵。此外,当指定’-v’选项时,返回的model是一个数值,是cross-validation的准确率。

以上为复制,我个人使用的是dos版的。所谓预测精度,就是留一验证原则。
Leave-One-Out Cross-validation。所谓的预测必须要有测试集,这是基础,然后把预测集加进来一块黑箱(svm)。当然,最正常的方法,必须结合predicted 和actual 值做回归,看回归系数。标注,斜率,回归的R2,RMSEC,RMSEP。