0

回帰の問題に libsvm (Matlab ライブラリ) を使用しようとしています。192 個のインスタンスのデータセットがあります。トレーニングとテスト セットのデータを分割するコードは次のとおりです。

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 個だけを使用してみました。しかし、この分割でも、2 つのテスト インスタンスで同じ予測値が得られるのでしょうか? コードに何か問題がありますか?

4

1 に答える 1

0

スケーリングを使用する必要があります。コードでトレーニングとデータ ベクトルをスケーリングしてみてください

于 2013-07-25T17:12:22.287 に答える