Как бороться с мультиклассовой классификацией с SVM? - PullRequest
0 голосов
/ 29 апреля 2020

Я не понимаю, как бороться с мультиклассовой классификацией в SVM. Все, что я нашел в inte rnet, это подход «один ко всем», который предназначен только для двоичной классификации. Но моя цель, например:

print(target)

Вывод:

[ 0  0  0 ... 9 9 9] 

Итак, как правильно справиться с SVM? Я только что построил модель, как эти примеры. Но, мне кажется, это неправильный способ классификации по нескольким меткам. Пожалуйста, ведите меня. Если SVM вообще не является хорошим выбором, предложите мне, пожалуйста, какой из них будет хорошим (и, если возможно, простым для реализации, как мой пример ниже) среди Случайного леса, деревьев решений, K ближайших соседей и т. Д. c. (кроме NN и CNN, поскольку я уже реализовал эти два алгоритма в моем наборе данных, мне просто нужен еще один алгоритм для сравнения моих результатов). Пока что моя кодировка:

X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.2, random_state=42)

from sklearn.svm import SVC
model_svm = SVC(kernel='linear')
clf_svm = model_svm.fit(X_train,y_train)
y_svm = model_svm.predict(X_test)

from sklearn.metrics import accuracy_score
print('Accuracy of SVM: ', accuracy_score(y_svm, y_test))

1 Ответ

0 голосов
/ 29 апреля 2020

вы использовали линейное ядро, которое подходит только для линейных границ:

model_svm = SVC(kernel='linear')

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

model_svm = SVC(kernel='rbf')

ссылка: https://scikit-learn.org/stable/auto_examples/svm/plot_svm_kernels.html

...