Я следую примеру на этой странице: Пример 10-кратной классификации SVM в MATLAB .
По сути, я следую примеру, чтобы выполнить свою классификацию.Проблема, с которой я сталкиваюсь, состоит в том, что пред всегда положительный.Он не может обнаружить отрицательные данные.
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], но мой корректный коэффициент равен 0,65 (65%), а TrainLabel <60x1 double> и TrainVec равен <60x5900 double>.
Еще два qns:
должны ли значения TrainLabel быть 0 и 1?это нормально, если это -1 или 1
TrainVec таков, что каждая функция из изображения размещается в ряд.Элемент из следующего изображения находится в следующем ряду.Это правильно?или каждая из функций должна быть размещена в отдельном столбце?
Нужна помощь в этом ... спасибо