machine-learning - 如何用 SVM 处理多类分类?
问题描述
我不明白如何使用 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))
解决方案
您使用了线性内核,这仅适用于线性边界:
model_svm = SVC(kernel='linear')
尝试使用,rbf
它可以用于大多数非线性边界并且非常有效。
model_svm = SVC(kernel='rbf')
参考:https ://scikit-learn.org/stable/auto_examples/svm/plot_svm_kernels.html
推荐阅读
- java - 我如何让我的新值通过 if 语句返回
- php - 致命错误:未捕获的错误:调用未定义的方法 Facebook\Facebook::getUser()
- java - 使用集合和 HashMap
- common-lisp - 无差别地循环遍历数组或列表
- c++ - 在运行时在 C++ 中创建包装器方法 - 已知原型
- javascript - Webpack:未生成预期的捆绑包
- javascript - 在 javascript 类的另一个函数中调用一个函数
- matlab - 如何在没有 for 循环的情况下表达如此大量的计算?
- wordpress - Wordpress:wp_hash_password 未按预期工作。所有登录失败
- android - Android 是否可以为单个请求记录每个客户端-服务器连接?