sklearn之Multiclass 估计器
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 估计器相关推荐
- 【机器学习】分类算法-sklearn转换器和估计器
目标 知道sklearn的转换器和估计器流程 转换器 想一下之前做的特征工程的步骤? 实例化 (实例化的是一个转换器类(Transformer)) 调用fit_transform(对于文档建立分类词频 ...
- sklearn数据集与估计器
sklearn数据集与估计器 1 sklearn数据集 (1)数据来源:大多数以文件的形式 (csv文件..), 因为mysql有性能瓶颈.读取速度遭到限制,数据大的时候很费时间 (2)读取数据的工 ...
- sklearn之Pipeline 估计器
Pipeline Pipeline 将若干个估计器按顺序连在一起,比如 特征提取 -> 降维 -> 拟合 -> 预测 在整个 Pipeline 中,它的属性永远和最后一个估计器属性一 ...
- sklearn之Multioutput 估计器
sklearn.multioutput 可以处理多输出 (multi-output) 的分类 一个例子就是预测图片每一个像素(标签) 的像素值是多少 (从 0 到 255 的 256 个类别) Mul ...
- Sklearn之Ensemble 估计器
分类器统计每个子分类器的预测类别数,再用「多数投票」原则得到最终预测. 回归器计算每个子回归器的预测平均值. 最常用的 Ensemble 估计器排列如下: AdaBoostClassifier: 逐步 ...
- 机器学习实战 | SKLearn最全应用指南
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- Python小白机器学习教程:Sklearn精讲
点击"简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 本文授权转载自王的机器 禁二次转载 作者:王圣元 阅读文本大概需要 60 分钟 老 ...
- 盘一盘 Python 系列 - Sklearn
全文共 26745 字,106 幅图表, 预计阅读时间 67 分钟. 0 引言 本文是 Python 系列的第十一篇 Python 入门篇 (上) Python 入门篇 (下) 数组计算之 NumPy ...
- 非常详细的sklearn介绍
0 引言 Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具.它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 AP ...
最新文章
- Udacity机器人软件工程师课程笔记(二十一) - 对点云进行集群可视化 - 聚类的分割 - K-means|K均值聚类, DBSCAN算法
- Openresty最佳案例 | 第1篇:Nginx介绍
- PPT | Docker定义存储-让应用无痛运行
- Glassfish3 asadmin 常用命令
- 【Caffe实践】 多目标输出探究
- Windows 平台下解决httpd.exe: syntax error on line 39
- 运维基础(13)日志切割工具 Logrotate
- Win10系统的SurfacePro4如何重装系统-3 重装完成之后的系统优化
- u-boot移植第四弹——2013.10u-boot增加dm9000的支持
- 元组-元组变量的循环遍历
- c++读取csv文件示例
- Kafka开发指南之 如何Kafka 事务型生产者,保证生产者exactly once
- 给java程序员网址_程序员常用网址,必须收藏
- Installshield2010实现web部署和数据库安装示例
- java更改reader字体颜色,Java 修改 文件内容 and BufferedReader 乱码问题
- c语言运行excel中vba程序,Excel 中如何运行 VBA 代码?
- 二叉搜索树(kv模型)的模拟实现
- iOS之解决崩溃Collection was mutated while being enumerated.
- ( 方框打勾 java_Java 11手册:Java 11是否在所有正确的方框中打勾?
- day06笔记(2021-09-28)-OOP:面向对象+封装+继承+多态
热门文章
- [转]SQL中的case when then else end用法
- gulp常用组件【study笔记】
- ecipse theme
- 【Vegas原创】imp/exp导入导出数据
- Linux不用来写代码,我使用过的Linux命令之:(冒号) - 啥也不做(除了……)
- 继承redis spring_Spring 极速集成注解 Redis 实践
- 吉大15秋学期计算机,吉大15秋学期《计算机应用基础》在线作业二.docx
- centos7安装详细图解_开封温包规格,电热执行器安装详细图解
- microsoft fix it_it狂人【14季全】
- win10动态壁纸怎么设置_电脑怎么设置动态桌面