Классификатор SVM в Matlab не работает должным образом на тестовом наборе - PullRequest
0 голосов
/ 14 июля 2020

Я обучил классификатора SVM на наборе функций рака груди. Я получаю точность проверки 83% на обучающем наборе, но на тестовом наборе точность очень низкая. Набор данных включает 1999 наблюдений и 9 особенностей. Соотношение обучающей выборки и тестовой выборки составляет 0,6: 0,4. Любые предложения будут очень признательны. Спасибо.

X_train=table2array(new7(1:1200,1:9));
y_train=table2array(new7(1:1200,10));
X_test=table2array(new7(1201:1999,1:9));
y_test=table2array(new7(1201:1999,10));
    
Mdl = fitcsvm(...
    X_train, ...
    y_train, ...
    'KernelFunction','rbf',...
    'OptimizeHyperparameters','auto',...
    'HyperparameterOptimizationOptions',...
    struct('AcquisitionFunctionName',...
    'expected-improvement-plus'));
% Perform cross-validation
partitionedModel = crossval(Mdl, 'KFold', 10);
% Compute validation predictions
[validationPredictions, validationScores] = kfoldPredict(partitionedModel);
% Compute validation accuracy
validation_error = kfoldLoss(partitionedModel, 'LossFun', 'ClassifError'); % validation error
validationAccuracy = 1 - validation_error;
%% test model
oofLabel_n = predict(Mdl,X_test);
oofLabel_n = double(oofLabel_n); % chuyen tu categorical sang dang double
test_accuracy_for_iter = sum((oofLabel_n == (y_test)))/length(y_test)*100;
%% save model
saveCompactModel(Mdl,'mySVM');

результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...