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

版权声明:本博客内容为学习过程中的一些记录,大部分转载内容已标明转载,部分内容如有因疏忽未注明请与我联系,转载原创内容请注明链接,谢谢! https://blog.csdn.net/xiaodongxiexie/article/details/76229042

这个repo 用来记录一些python技巧、书籍、学习链接等,欢迎star

github地址

svm.SVC 支持向量机分类是一个很有效的分类方式,但是其只对2分类有效(sklearn中并不是,针对多分类其使用了1vs多,decision_function_shape : 'ovo', 'ovr', default='ovr', 这里假装只对2分类有效,用来进行下面的内容,  ̄□ ̄||),不过,可以将多分类经过多次2分类最终实现多分类,而sklearn中的multiclass包就可以实现这种方式,减少我们重复造轮子。

import numpy as np
from sklearn.datasets import load_digits
from sklearn.preprocessing import label_binarize
from sklearn.multiclass import OneVsRestClassifier
from sklearn.model_selection import train_test_split


digits = load_digits()

x, y = digits.data, digits.target
y = 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.97475872308834444

In [237]: clf.score(x_test, y_test)
Out[237]: 0.85999999999999999

In [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)

这个repo 用来记录一些python技巧、书籍、学习链接等,欢迎star

github地址

阅读更多

没有更多推荐了,返回首页