浅谈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的Flask框架中Flask-Admin库的简单入门指引
Apr 07 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
python下实现二叉堆以及堆排序的示例
Sep 29 Python
tensorflow识别自己手写数字
Mar 14 Python
解决pandas read_csv 读取中文列标题文件报错的问题
Jun 15 Python
Python使用jsonpath-rw模块处理Json对象操作示例
Jul 31 Python
解决新django中的path不能使用正则表达式的问题
Dec 18 Python
详解Python数据分析--Pandas知识点
Mar 23 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
pandas 实现将NaN转换为None
May 14 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
PHP闭包函数详解
2016/02/13 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
Python配置mysql的教程(推荐)
2017/10/13 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
python SVM 线性分类模型的实现
2019/07/19 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
拓展培训心得体会
2014/01/04 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
学校运动会报道稿
2014/09/23 职场文书
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js
CSS的calc函数用法小结
2022/06/25 HTML / CSS