浅谈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 相关文章推荐
Python3处理文件中每个词的方法
May 22 Python
Python序列操作之进阶篇
Dec 08 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
Python3.4解释器用法简单示例
Mar 22 Python
Python控制Firefox方法总结
Jun 03 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
Pytorch 如何实现LSTM时间序列预测
May 17 Python
Python如何让字典保持有序排列
Apr 29 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 flush类输出缓冲剖析
2008/10/19 PHP
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
js实现3D照片墙效果
2019/10/28 Javascript
js实现抽奖功能
2020/11/24 Javascript
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Flask数据库迁移简单介绍
2017/10/24 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
Django框架验证码用法实例分析
2019/05/10 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
CSS3盒子模型详解
2013/04/24 HTML / CSS
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
客房主管岗位职责
2013/12/09 职场文书
索桥的故事教学反思
2014/02/06 职场文书
青年文明号口号
2014/06/17 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
python实现过滤敏感词
2021/05/08 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python