浅谈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兔子毒药问题实例分析
Mar 05 Python
python计算牛顿迭代多项式实例分析
May 07 Python
python中map()与zip()操作方法
Feb 27 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
Python神奇的内置函数locals的实例讲解
Feb 22 Python
详解Python循环作用域与闭包
Mar 21 Python
Python中@property的理解和使用示例
Jun 11 Python
在PYQT5中QscrollArea(滚动条)的使用方法
Jun 14 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
Python 解析简单的XML数据
Jul 24 Python
Pycharm中如何关掉python console
Oct 27 Python
Python实现区域填充的示例代码
Feb 03 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中的Session和Cookie
2013/06/21 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
node.js基于express使用websocket的方法
2017/11/09 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
python3制作捧腹网段子页爬虫
2017/02/12 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
灵活运用CSS3特性绘制简易版围棋效果
2016/09/28 HTML / CSS
巴西网上药房:onofre
2016/11/21 全球购物
美国专业消费电子及摄影器材网站:B&H Photo Video
2019/12/18 全球购物
测试时代收集的软件测试面试题
2013/09/25 面试题
函授毕业生的自我鉴定
2013/11/26 职场文书
应聘英语教师求职信
2014/04/24 职场文书
食堂标语大全
2014/06/11 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
2015新学期开学寄语
2015/02/26 职场文书
中小企业员工手册范本
2015/05/14 职场文书
个人收入证明格式
2015/06/24 职场文书