浅谈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批量修改文件后缀的方法
Jan 26 Python
跟老齐学Python之使用Python查询更新数据库
Nov 25 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
Pycharm远程调试openstack的方法
Nov 21 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
python读取视频流提取视频帧的两种方法
Oct 22 Python
python实现雨滴下落到地面效果
Jun 21 Python
用Python将一个列表分割成小列表的实例讲解
Jul 02 Python
Python-while 计算100以内奇数和的方法
Jun 11 Python
Python递归函数特点及原理解析
Mar 04 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 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性能优化的介绍
2013/06/20 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
js 数组去重的四种实用方法
2014/09/09 Javascript
jQuery地图map悬停显示省市代码分享
2015/08/20 Javascript
javascript实现查找数组中最大值方法汇总
2016/02/13 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
javaScript之split与join的区别(详解)
2017/11/08 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
python re库的正则表达式入门学习教程
2019/03/08 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Python如何定义一个函数
2015/09/01 面试题
医院后勤自我鉴定
2013/10/13 职场文书
护理专业推荐信
2013/11/07 职场文书
工艺工程师工作职责
2013/11/23 职场文书
影视动画专业个人的自我评价
2013/12/31 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
党员检讨书
2014/10/13 职场文书
综治维稳工作汇报
2014/10/27 职场文书
会计师事务所实习证明
2014/11/16 职场文书
刘胡兰观后感
2015/06/16 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python