浅谈sklearn中predict与predict_proba区别


Posted in Python onJune 28, 2020

predict_proba 返回的是一个 n 行 k 列的数组,列是标签(有排序), 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,并且每一行的概率和为1。

predict 直接返回的是预测 的标签。

具体见下面示例:

# conding :utf-8 
from sklearn.linear_model import LogisticRegression 
import numpy as np 
x_train = np.array([[1,2,3], 
          [1,3,4], 
          [2,1,2], 
          [4,5,6], 
          [3,5,3], 
          [1,7,2]]) 
 
y_train = np.array([3, 3, 3, 2, 2, 2]) 
 
x_test = np.array([[2,2,2], 
          [3,2,6], 
          [1,7,4]]) 
 
clf = LogisticRegression() 
clf.fit(x_train, y_train) 
 
# 返回预测标签 
print(clf.predict(x_test)) 
 
# 返回预测属于某标签的概率 
print(clf.predict_proba(x_test)) 
 
# [2 3 2] 
#
# [[0.56651809 0.43348191] 
# [0.15598162 0.84401838] 
# [0.86852502 0.13147498]] 
# 分析结果: 
# 标签是 2,3 共两个,所以predict_proba返回的为2列,且是排序的(第一列为标签2,第二列为标签3),
# 返回矩阵的行数是测试样本个数 因此为3行
# 预测[2,2,2]的标签是2的概率为0.56651809,3的概率为0.43348191 
# 
# 预测[3,2,6]的标签是2的概率为0.15598162,3的概率为0.84401838 
# 
# 预测[1,7,4]的标签是2的概率为0.86852502,3的概率为0.13147498

补充知识:sklearn中predict与predict_proba的识别结果不一致

今天训练了好久的决策树模型在测试的时候发现个bug,使用predict得到的结果居然不是predict_proba中最大数值的索引!因为脚本中需要模型的置信度,所以希望拿到predict_proba的类别概率。

经过胡乱分析发现predict_proba得到的维度比总类别数少了几个,经过测试发现就是这个造成的,即训练集中有部分类别样本数为0。这个问题比较隐蔽,记录一下方便天涯沦落人绕坑。

Tip:在sklearn的train_test_split中有一个参数可以强制测试集和训练集的数据分布一致,也就不会导致缺类别的问题。

以上这篇浅谈sklearn中predict与predict_proba区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python基于checksum计算文件是否相同的方法
Jul 09 Python
详解Django中的form库的使用
Jul 18 Python
Python中的集合类型知识讲解
Aug 19 Python
深入浅析python继承问题
May 29 Python
python tornado微信开发入门代码
Aug 24 Python
Python多线程应用于自动化测试操作示例
Dec 06 Python
Python之循环结构
Jan 15 Python
Python 一键获取百度网盘提取码的方法
Aug 01 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
Python函数参数分类原理详解
May 28 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 #Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 #Python
PyTorch的torch.cat用法
Jun 28 #Python
使用pytorch 筛选出一定范围的值
Jun 28 #Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 #Python
pytorch 常用函数 max ,eq说明
Jun 28 #Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 #Python
You might like
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
nginx 设置多个站跨域
2021/03/09 Servers
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
javascript常用的设计模式
2017/02/09 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
Python线程的两种编程方式
2015/04/14 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
python实现人民币大写转换
2018/06/20 Python
python进行文件对比的方法
2018/12/24 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
python实现按日期归档文件
2021/01/30 Python
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
项目转让协议书
2014/10/27 职场文书
2014年政府采购工作总结
2014/12/09 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
不同意离婚答辩状
2015/05/22 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server
python热力图实现的完整实例
2022/06/25 Python