このページの例:Example of 10-fold SVM classification in MATLABに従っています。機能を正しく分類できません
基本的には、分類を実行するための例に従っています。私が直面している問題は、predは常にpostiveです。マイナスのデータは検出できません。
clear all;
clc;
load('C:\Users\HP\Documents\MATLAB\TrainLabel');
load('C:\Users\HP\Documents\MATLAB\TrainVec');
cvFolds = crossvalind('Kfold', TrainLabel, 10);
cp = classperf(TrainLabel);
for i = 1:10
testIdx = (cvFolds == i);
trainIdx = ~testIdx;
% Model = svmtrain(TrainVec(trainIdx,:), TrainLabel(trainIdx),'showplot',true);
Model = svmtrain(TrainVec(trainIdx,:), TrainLabel(trainIdx), ...
'Autoscale',true, 'Showplot',false, 'Method','QP', ...
'BoxConstraint',2e-1, 'Kernel_Function','rbf', 'RBF_Sigma',1);
pred = svmclassify(Model, TrainVec(testIdx,:),'Showplot',false);
cp = classperf(cp, pred, testIdx);
end
cp.CorrectRate
cp.CountingMatrix
PREDの値[1; 1; 1; 1; 1; 1]私correctrateは0.65(65%)であり、TrainLabelが< 60x1二重である>とTrainVec>は二重< 60x5900あります。
つ以上QNS:
TrainLabelの値は0と1でなければなりませんか?それが-1か1であればOKですか?
TrainVecはイメージの各機能が行に配置されるようなものです。次の画像の特徴が次の行に配置されます。これは正しいです?またはそれぞれのフィーチャを別の列に配置する必要がありますか?
この上でいくつかの助けが必要...おかげ
これは間違っています。あなたは5900の機能を手に入れません。それ以外に、 '' doc svmtrain'を見てください: " ** autoscale **: svmtrainは自動的にデータポイントを平均でセンタリングし、それらの平均値を単位標準偏差 デフォルト:true "です。 スケールするかどうかは関係ありません。 – jpjacobs
しかし、私は冗談ではありません – user999450