Регресс Libsvm в Matlab предсказывает одинаковые значения для экземпляров тестового набора

Я пытаюсь использовать 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 тестовых экземпляров? Что-то не так с кодом?

1 ответ

Вы должны использовать масштабирование, попробуйте масштабировать поезда и векторы данных в вашем коде

Другие вопросы по тегам