sklearn通过OneVsRestClassifier实现svm.SVC的多分类

来源:互联网 发布:手机网络不卡玩游戏卡 编辑:程序博客网 时间:2024/05/23 01:17

svm.SVC 支持向量机分类是一个很有效的分类方式,但是其只对2分类有效,不过,可以将多分类经过多次2分类最终实现多分类,而sklearn中的multiclass包就可以实现这种方式,减少我们重复造轮子。

import numpy as npfrom sklearn.datasets import load_digitsfrom sklearn.preprocessing import label_binarizefrom sklearn.multiclass import OneVsRestClassifierfrom sklearn.model_selection import train_test_splitdigits = load_digits()x, y = digits.data, digits.targety = label_binarize(y, classes=list(range(10)))x_train, x_test, y_train, y_test = train_test_split(x, y)model = OneVsRestClassifier(svm.SVC(kernel='linear'))clf = model.fit(x_train, y_train)In [236]: clf.score(x_train, y_train)Out[236]: 0.97475872308834444In [237]: clf.score(x_test, y_test)Out[237]: 0.85999999999999999In [242]: np.argmax(y_test, axis=1)Out[242]: array([0, 0, 2, ..., 5, 6, 7], dtype=int64)In [243]: np.argmax(clf.decision_function(x_test), axis=1)Out[243]: array([0, 0, 2, ..., 5, 6, 7], dtype=int64)