我正嘗試使用libsvm(Matlab庫)進行迴歸問題。我有一個192個實例的數據集。這裏是我的代碼劃分在訓練和測試組數據:Matlab中的Libsvm迴歸預測測試集實例的相同值
idx = [zeros(170,1) ;ones(22,1)];
idx = idx(randperm(192));
train = data(idx==0,:);
train_label = label(idx==0,:);
test = data(idx==1,:);
test_label = label(idx==1,:);
model_1 = svmtrain(train_label,train,'-s 3 -t 2 -c 1 -g 0.01');
model_2 = svmtrain(label,data,'-s 3 -t 2 -c 1 -g 0.01');
[y_hat, Acc,Dec] = svmpredict(test_label, test, model);
如果我用整個數據集(model_1)訓練模型比對測試集的每個實例我有不同的預測值,而如果我只使用我爲每個測試記錄獲得完全相同的值的訓練集。我認爲這是因爲訓練集可能太小而不能訓練出好的模型,所以我嘗試使用190個訓練樣本和2個訓練樣本進行測試。但即使在這個部門中,我也得到了兩個測試實例的相同預測值?代碼有問題嗎?
您的代碼來看規模火車和數據的載體,似乎'model_2'是一個在您使用完整的數據集培訓(不'model_1'根據你的帖子)。 –
正好,但爲什麼我只使用整個數據集獲得不同的值?如果我使用190個實例進行訓練,只有2個進行測試(這或多或少與使用整個數據集相同),我獲得了相同的預測值 –