sklearn.multiclass 可以处理多类别 (multi-class) 的多标签 (multi-label) 的分类问题。

多类别分类

手写数字有 0-9 十类,但手头上只有两分类估计器 (比如像支撑向量机) 怎么用呢?我们可以采取下面三种常见策略:

  • 一对一 (One vs One, OvO):一个分类器用来处理数字 0 和数字 1,一个用来处理数字 0 和数字 2,一个用来处理数字 1 和 2,以此类推。N 个类需要 N(N-1)/2 个分类器。

  • 一对其他 (One vs All, OvA):训练 10 个二分类器,每一个对应一个数字,第一个分类 1 和「非1」,第二个分类 2 和「非2」,以此类推。N 个类需要 N 个分类器。

OneVsOneClassifier:

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn.multiclass import OneVsOneClassifier
from sklearn.linear_model import LogisticRegression
from sklearn import metrics#metrics 来计算各种性能指标digits = load_digits()X_train, X_test, y_train, y_test= train_test_split( digits['data'], digits['target'], test_size=0.2 )
print( 'The size of X_train is ', X_train.shape )
print( 'The size of y_train is ', y_train.shape )
print( 'The size of X_test is ', X_test.shape )
print( 'The size of y_test is ', y_test.shape )fig,axes = plt.subplots(10,10,figsize=(8,8))
fig.subplots_adjust(hspace=0.1,wspace=0.1)for i,ax in enumerate(axes.flat):ax.imshow(X_train[i,:].reshape(8,8),cmap="binary",interpolation="nearest")ax.text(0.05,0.05,str(y_train[i]),transform=ax.transAxes,color="blue")ax.set_xticks([])ax.set_yticks([])plt.show()ovo_lr=OneVsOneClassifier(LogisticRegression(solver="lbfgs",max_iter=200))#创建一个一对一的多分类器
ovo_lr.fit(X_train,y_train) #开始分类print(len(ovo_lr.estimators_))#查看分类器的数量
print("train_OVO LR",metrics.accuracy_score(y_train,ovo_lr.predict(X_train)))
print("test_ovo LR",metrics.accuracy_score(y_test,ovo_lr.predict(X_test)))

查看结果:

F:\开发工具\pythonProject\tools\venv\Scripts\python.exe F:/开发工具/pythonProject/tools/python的sklear学习/sklearn01.py
The size of X_train is  (1437, 64)
The size of y_train is  (1437,)
The size of X_test is  (360, 64)
The size of y_test is  (360,)
45
train_OVO LR 1.0
test_ovo LR 0.9833333333333333Process finished with exit code 0

OneVsRestClassifier:

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.multiclass import OneVsRestClassifier
from sklearn import metrics#metrics 来计算各种性能指标
from sklearn.linear_model import LogisticRegressiondigits = load_digits()
X_train, X_test, y_train, y_test= train_test_split( digits['data'], digits['target'], test_size=0.2 )ova_lr=OneVsRestClassifier(LogisticRegression(solver="lbfgs",max_iter=800))ova_lr.fit(X_train,y_train)print( len(ova_lr.estimators_) )  #查看分类器的数量
print("train_ova_lr",metrics.accuracy_score(y_train,ova_lr.predict(X_train)))
print("test_ova_lr",metrics.accuracy_score(y_test,ova_lr.predict(X_test)))

测试结果:

F:\开发工具\pythonProject\tools\venv\Scripts\python.exe F:/开发工具/pythonProject/tools/python的sklear学习/sklearn02.py
10
train_ova_lr 0.9972164231036882
test_ova_lr 0.9527777777777777Process finished with exit code 0

多标签分类:

我们特意为每个数字设计了多标签:

  • 标签 1 - 奇数、偶数

  • 标签 2 - 小于等于 4,大于 4


from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.multiclass import OneVsRestClassifier
from sklearn import metrics# metrics 来计算各种性能指标
from sklearn.linear_model import LogisticRegression
import numpy as npdigits = load_digits()
X_train, X_test, y_train, y_test= train_test_split( digits['data'], digits['target'], test_size=0.2 )
y_train_multilabel  = np.c_[ y_train%2==0, y_train<=4 ]
ova_lr =OneVsRestClassifier(LogisticRegression(solver="lbfgs" ,max_iter=800))ova_lr.fit(X_train ,y_train_multilabel)print(y_train_multilabel)
print( len(ova_lr.estimators_) )  # 查看分类器的数量
print( y_test[:1] )
print( ova_lr.predict(X_test[:1,:]) )

测试结果:

F:\开发工具\pythonProject\tools\venv\Scripts\python.exe F:/开发工具/pythonProject/tools/python的sklear学习/sklearn03.py
[[False False][False False][ True False]...[ True False][False  True][False  True]]
2
[6]
[[1 0]]Process finished with exit code 0

sklearn之Multiclass 估计器相关推荐

  1. 【机器学习】分类算法-sklearn转换器和估计器

    目标 知道sklearn的转换器和估计器流程 转换器 想一下之前做的特征工程的步骤? 实例化 (实例化的是一个转换器类(Transformer)) 调用fit_transform(对于文档建立分类词频 ...

  2. sklearn数据集与估计器

    sklearn数据集与估计器 1 sklearn数据集 (1)数据来源:大多数以文件的形式  (csv文件..), 因为mysql有性能瓶颈.读取速度遭到限制,数据大的时候很费时间 (2)读取数据的工 ...

  3. sklearn之Pipeline 估计器

    Pipeline Pipeline 将若干个估计器按顺序连在一起,比如 特征提取 -> 降维 -> 拟合 -> 预测 在整个 Pipeline 中,它的属性永远和最后一个估计器属性一 ...

  4. sklearn之Multioutput 估计器

    sklearn.multioutput 可以处理多输出 (multi-output) 的分类 一个例子就是预测图片每一个像素(标签) 的像素值是多少 (从 0 到 255 的 256 个类别) Mul ...

  5. Sklearn之Ensemble 估计器

    分类器统计每个子分类器的预测类别数,再用「多数投票」原则得到最终预测. 回归器计算每个子回归器的预测平均值. 最常用的 Ensemble 估计器排列如下: AdaBoostClassifier: 逐步 ...

  6. 机器学习实战 | SKLearn最全应用指南

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  7. Python小白机器学习教程:Sklearn精讲

    点击"简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 本文授权转载自王的机器 禁二次转载 作者:王圣元 阅读文本大概需要 60 分钟 老 ...

  8. 盘一盘 Python 系列 - Sklearn

    全文共 26745 字,106 幅图表, 预计阅读时间 67 分钟. 0 引言 本文是 Python 系列的第十一篇 Python 入门篇 (上) Python 入门篇 (下) 数组计算之 NumPy ...

  9. 非常详细的sklearn介绍

    0 引言 Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具.它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 AP ...

最新文章

  1. Udacity机器人软件工程师课程笔记(二十一) - 对点云进行集群可视化 - 聚类的分割 - K-means|K均值聚类, DBSCAN算法
  2. Openresty最佳案例 | 第1篇:Nginx介绍
  3. PPT | Docker定义存储-让应用无痛运行
  4. Glassfish3 asadmin 常用命令
  5. 【Caffe实践】 多目标输出探究
  6. Windows 平台下解决httpd.exe: syntax error on line 39
  7. 运维基础(13)日志切割工具 Logrotate
  8. Win10系统的SurfacePro4如何重装系统-3 重装完成之后的系统优化
  9. u-boot移植第四弹——2013.10u-boot增加dm9000的支持
  10. 元组-元组变量的循环遍历
  11. c++读取csv文件示例
  12. Kafka开发指南之 如何Kafka 事务型生产者,保证生产者exactly once
  13. 给java程序员网址_程序员常用网址,必须收藏
  14. Installshield2010实现web部署和数据库安装示例
  15. java更改reader字体颜色,Java 修改 文件内容 and BufferedReader 乱码问题
  16. c语言运行excel中vba程序,Excel 中如何运行 VBA 代码?
  17. 二叉搜索树(kv模型)的模拟实现
  18. iOS之解决崩溃Collection was mutated while being enumerated.
  19. ( 方框打勾 java_Java 11手册:Java 11是否在所有正确的方框中打勾?
  20. day06笔记(2021-09-28)-OOP:面向对象+封装+继承+多态

热门文章

  1. [转]SQL中的case when then else end用法
  2. gulp常用组件【study笔记】
  3. ecipse theme
  4. 【Vegas原创】imp/exp导入导出数据
  5. Linux不用来写代码,我使用过的Linux命令之:(冒号) - 啥也不做(除了……)
  6. 继承redis spring_Spring 极速集成注解 Redis 实践
  7. 吉大15秋学期计算机,吉大15秋学期《计算机应用基础》在线作业二.docx
  8. centos7安装详细图解_开封温包规格,电热执行器安装详细图解
  9. microsoft fix it_it狂人【14季全】
  10. win10动态壁纸怎么设置_电脑怎么设置动态桌面