Как я могу повысить точность машины опорных векторов в Python? - PullRequest
0 голосов
/ 15 марта 2019

Я пытался подогнать некоторые данные и предсказать их. Я использую функцию SVC в sklearn для их обучения. Моя проблема в том, что мои данные настолько сложны, и я не знаю, как их классифицировать. m Загрузка трехмерной фигуры здесь. Набор данных включает в себя около 800 строк с 3 столбцами. Я использовал гамма = 100 и C = 10,0, и после разделения набора данных и их тестирования я получил точность от 61,0 до 64,0 процентов. Но я думаю, что могу сделать лучше, чем эти. Я установил ядро ​​'rbf' и после некоторых тестов я понял, что 'rbf' - хороший выбор. Но после прочтения документации svm здесь и функций ядра здесь i запутался. Вот мои вопросы: 1. Какое ядро ​​я должен использовать (основываясь на моем наборе данных, который загружен здесь)? 2. Какие другие параметры я должен изменить для задачи классификации? помоги мне получить хорошую точность вот мой набор данных:

from sklearn import svm
from sklearn.model_selection import train_test_split
model=svm.SVC(C=1.0,gamma=100,kernel='rbf')
X_train, X_test, y_train, y_test = train_test_split(X, labels)
model.fit(X_train,y_train)
print(model.predict(X_test))
print('\n\n\n',y_test,'\n\n\n',

( np.array(y_test)==model.predict(X_test)).sum()/(np.array(y_test).shape))

enter image description here

1 Ответ

0 голосов
/ 15 марта 2019

Просто обратите внимание: вы фактически не предоставили никакого набора данных, просто исходный код.

Использование другого ядра кажется хорошей идеей.Только по этому образу трудно сказать, какое ядро ​​будет работать лучше, чем другие, обычно выбор ядра требует некоторой интуиции или знания предметной области, поэтому трудно сказать, что это случайно.

Поскольку имеется только 4 ядрав scikit-learn я думаю, что вы должны просто попробовать их все и сравнить, возможно, используя перекрестную проверку, чтобы увидеть, какая из них работает лучше всего.Некоторые ядра параметризованы, и там вы можете попробовать несколько ядер, вплоть до степени 10. Использование большей степени, чем 10, для полиномиального ядра может ничего не помочь, но это только мое предположение.

Вам также следует попробовать другоезначение для параметра C.В большинстве алгоритмов машинного обучения константы, взвешивающие индивидуальные потери при многозадачном обучении (что также имеет место и здесь), оказывают «мультипликативное» влияние (из-за отсутствия лучших слов), поэтому я советую использовать для использования следующие значения для C:[1e-3, 1e-2, 1e-1, 1, 10, 100]

...