如何使用SVM处理多类分类?

问题描述 投票:0回答:1

我不明白如何使用SVM处理多类分类。我在互联网上发现的所有方法都是仅用于二进制分类的一对一方法。但是,我的目标是例如:

print(target)

输出:

[ 0  0  0 ... 9 9 9] 

所以,如何正确地使用SVM处理呢?我只是像那些例子那样建立模型。但是,在我看来,这不是多标签分类的正确方法。请指导我。如果SVM根本不是一个很好的选择,请建议我在随机森林,决策树,K个最近邻居等(除了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))
machine-learning svm
1个回答
0
投票

您使用了线性核,仅对线性边界有用:

model_svm = SVC(kernel='linear')

尝试使用,rbf可用于大多数非线性边界,并且非常有效。

model_svm = SVC(kernel='rbf')

参考:https://scikit-learn.org/stable/auto_examples/svm/plot_svm_kernels.html

© www.soinside.com 2019 - 2024. All rights reserved.