Libsvm虚拟标签干扰预测

时间:2014-03-15 14:51:24

标签: matlab libsvm

我试图在matlab中使用libsvm来模拟二进制分类器的样本预测。我的目标变量(即我的标签)是二进制(-1 + 1)。因此,在我的测试集中有一系列我不知道标签。我为这些观察创建了一个新标签(这个标签是747)。我发现在我的predict_label_test向量中(见下面的代码),包含了这个747标签。所以这意味着我得到的预测受到包含测试集的数据标签的影响,这是我应该预测的? - 错误可能是我使用Libsvm读写函数的方式,但我找不到它 - 非常感谢!!

%%%%%%%%%%从CSV文件中获取数据并将其转换为LIBSVM

让addpath( 'C:\ libsvm1 \ MATLAB'); %表示CSV文件的位置

ALLDATA = csvread('DATACSV.csv'); %读取csv文件

labels = ALLDATA(:,1); %标签包含在第一列数据

labels_sparse = sparse(标签); %?需要

features = ALLDATA(:,4:end); %功能从第4列开始

features_sparse = sparse(features); %要素必须在稀疏矩阵中

libsvmwrite('TTT.train',labels_sparse,features_sparse); %将文件写入libsvm格式

[label_vector,predictors_matrix] = libsvmread('C:\ libsvm1 \ matlab \ TTT.train'); %读取以Libsvm格式记录的文件

%%%%% DEFINE VECTOR AND MATRIX SIZE

label_vector_train = label_vector(1:143,:);

predictors_matrix_train = predictors_matrix(1:143,:);

label_vector_test = label_vector(144:193,:);

predictors_matrix_test = predictors_matrix(144:193,:);

%的预测

param = [' - q -c 2 -g 3'];

bestModel = svmtrain(label_vector_test,predictors_matrix_test,param);

[predict_label_test,accuracy,prob_values] = svmpredict(label_vector_test,predictors_matrix_test,bestModel);

1 个答案:

答案 0 :(得分:0)

当您使用训练数据进行训练时,您正在训练带有测试数据的svm模型:

bestModel = svmtrain(label_vector_test, predictors_matrix_test, param);

应该是:

bestModel = svmtrain(label_vector_train, predictors_matrix_train, param);