浅谈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使用os模块的os.walk遍历文件夹示例
Jan 27 Python
python的三目运算符和not in运算符使用示例
Mar 03 Python
零基础写python爬虫之urllib2使用指南
Nov 05 Python
Python中的Matplotlib模块入门教程
Apr 15 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
python pexpect ssh 远程登录服务器的方法
Feb 14 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 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生成随机密码的三种方法小结
2010/09/04 PHP
php实现telnet功能示例
2014/04/08 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
js下用层来实现select的title提示属性
2010/02/23 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
部署Python的框架下的web app的详细教程
2015/04/30 Python
Python进阶篇之字典操作总结
2016/11/16 Python
python打开windows应用程序的实例
2019/06/28 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
应用艺术毕业生的自我评价
2013/12/04 职场文书
考察现实表现材料
2014/05/19 职场文书
自我查摆剖析材料
2014/10/11 职场文书
公司给客户的感谢信
2015/01/23 职场文书
材料采购员岗位职责
2015/04/03 职场文书
小学教研工作总结2015
2015/05/13 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
消费者理赔投诉书
2015/07/02 职场文书
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL