浅谈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操作列表的常用方法分享
Feb 13 Python
Python发送以整个文件夹的内容为附件的邮件的教程
May 06 Python
python实现二叉查找树实例代码
Feb 08 Python
python tkinter界面居中显示的方法
Oct 11 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
python lxml中etree的简单应用
May 10 Python
django2笔记之路由path语法的实现
Jul 17 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
Django中如何用xlwt生成表格的方法步骤
Jan 31 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代码
2008/04/09 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
php生出随机字符串
2017/07/06 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
angularjs结合html5实现拖拽功能
2018/06/25 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
Python实现CET查分的方法
2015/03/10 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
django框架CSRF防护原理与用法分析
2019/07/22 Python
python实现PID算法及测试的例子
2019/08/08 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
业绩考核岗位职责
2014/02/01 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
欠款证明
2015/06/24 职场文书
ztree+ajax实现文件树下载功能
2021/05/18 Javascript
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
Golang 并发编程 SingleFlight模式
2022/04/26 Golang