我提取了培训和测试数据的主要组成部分 'trainingdata.train'具有来自+1(面部1)和-1(所有其他面部)标签的特征值。 'testdata.train'具有来自face 2的特征值而没有标签,因为我希望SVM预测其标签。 LIBSVM给出的“predict_label”是+1,即使它应该是-1。
[training_label_matrix, training_instance_matrix] = libsvmread('trainingdata.train');
[testing_label_matrix, testing_instance_matrix] = libsvmread('testdata.train');
model = svmtrain(training_label_matrix, training_instance_matrix);
[predicted_label] = svmpredict(testing_label_matrix, testing_instance_matrix, model);
请指出我做错了什么。
答案 0 :(得分:1)
使用[predict_label, accuracy, prob_values] = svmpredict(testLabel, testData, model, '-b 1');
来观察准确性。
testLabel
是包含测试数据“正确”标签的向量。给出此参数以计算accuracy
。在测试数据标签未知的实际情况下,只需使用任意随机值即可获得predict_label
而无需计算accuracy
。
此外,虽然不是必需的,但您最好在svmtrain
中指定选项,请查看their page了解详情。
答案 1 :(得分:0)
@Lennon:代码应该这样吗?
[training_label_matrix, training_instance_matrix] = libsvmread('trainingdata.train');
[testing_label_matrix, testing_instance_matrix] = libsvmread('testdata.train');
model = svmtrain(training_label_matrix, training_instance_matrix);
[predict_label, accuracy, prob_values] = svmpredict(ones(size(testData,1),1), testing_instance_matrix, model, '-b 1');