Я ищу наилучшее значение C (параметр стоимости) для обучения моему классификатору SVM. Вот мой код:Wierd behavoir при обучении классификатора SVM
clear all; close all; clc
% Load training features and labels
[y, x] = libsvmread('training_data.train'); %the training dataset is named training_data.train
cost=[2^-7,2^-5,2^-3,2^-1,2^1,2^3,2^5,2^7,2^9,2^11,2^13,2^15];
accuracy=zeros(1,length(cost)); %This array will store the accuracy values corresponding to each element in the cost array
for i = 1:length(cost)
opt = sprintf('-c %i -v 3',cost(i));
accuracy(i)=svmtrain(y,x,opt);
end
accuracy
Я пользуюсь библиотекой LIBSVM. Когда я запускаю эту программу, массив точности заполняется довольно странные значения: Вот результат:
Столбцы 1 по 8:
67,335 93,696 91,404 92,550 93,696 93,553 93,553 93,553
Столбцы 9 через 12:
93,553 93,553 93,553 93,553
Это означает, что я получаю самую высокую точность кросс-проверки на 2^-5. Должен ли я получить максимальную точность при максимальном значении C? (Насколько я понимаю, это штрафный фактор для ошибочной классификации). Ожидается ли от этого поведение? (Я создаю классификатор для идентификации рака молочной железы с использованием базы данных UCI ML).
Спасибо за ответ. Я новичок в Stack Overflow и, следовательно, я не могу поддержать ваш ответ. Но тем не менее это помогло. –
@PrashantPandey Если он отвечает на ваш вопрос, вы должны * принять * его ответ (который всегда должен быть возможен, несмотря на SO-score). – sascha
Выполнено. Спасибо за совет. –