浅谈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开发vim插件及心得分享
Nov 04 Python
举例详解Python中threading模块的几个常用方法
Jun 18 Python
Python实现网站注册验证码生成类
Jun 08 Python
Python实现按特定格式对文件进行读写的方法示例
Nov 30 Python
Python断言assert的用法代码解析
Feb 03 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
python中mongodb包操作数据库
Apr 19 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 的 __FILE__ 常量
2007/01/15 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
python使用tornado实现登录和登出
2018/07/28 Python
python判断输入日期为第几天的实例
2018/11/13 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
行政助理岗位职责
2013/11/10 职场文书
店长岗位职责
2013/11/21 职场文书
网上书店创业计划书
2014/01/12 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
初二生物教学反思
2014/02/03 职场文书
机械制造专业毕业生求职信
2014/03/02 职场文书
投资合作协议书范本
2014/04/17 职场文书
投资合作协议书
2014/04/17 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
自我检讨书范文
2015/01/28 职场文书
MySQL去除密码登录告警的方法
2022/04/20 MySQL
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript