为什么预测标签为+1,即使它应该为-1?在MATLAB中使用LIBSVM

问题描述 投票:1回答:2

我提取了训练和测试数据的主要组成部分。'trainingdata.train'具有来自+1(面1)和-1(所有其他面)标签的特征值。“ testdata.train”具有面2的特征值,没有标签,因为我希望SVM预测其标签。LIBSVM给出的“ predicted_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);

请向我指出我做错了。

matlab label svm pca libsvm
2个回答
1
投票

使用[predict_label, accuracy, prob_values] = svmpredict(testLabel, testData, model, '-b 1');观察精度。

testLabel是包含测试数据的“正确”标签的向量。给出此参数是为了计算accuracy。在测试数据标签未知的真实情况下,只需使用任何随机值即可获取predict_label,而无需计算accuracy

此外,尽管不是必需的,但最好在svmtrain中指定选项,请检查their page了解更多详细信息。


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');
© www.soinside.com 2019 - 2024. All rights reserved.