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 =
[]
因此,你要么返回一个predicted_label,要么返回三个。所以程序改成:
LibSVM的预测精度是通过svmpredict函数计算出来的。
支持向量机方法是一个超平面,或在一个高维或者无限维空间里对在低维线性空间中不可分的类别进行分类。
在机器学习中,支持向量机(SVM,还支持矢量网络)是与相关的学习算法有关的监督学习模型,可以分析数据,识别模式,用于分类和回归分析。给定一组训练样本,每个标记为属于两类,一个SVM训练算法建立了一个模型,分配新的实例为一类或其他类,使其成为非概率二元线性分类。一个SVM模型的例子,如在空间中的点,映射,使得所述不同的类别的例子是由一个明显的差距是尽可能宽划分的表示。新的实施例则映射到相同的空间中,并预测基于它们落在所述间隙侧上属于一个类别。
所以在你仅仅是建立了模型之后你还无法获得精度的,必须借由预测样本,对模型的准确度进行检验。
model = svmtrain(heart_scale_label,heart_scale_inst);