浅谈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中os和shutil模块实用方法集锦
May 13 Python
Python实现excel转sqlite的方法
Jul 17 Python
python SMTP实现发送带附件电子邮件
May 22 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
python频繁写入文件时提速的方法
Jun 26 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
Python实现CNN的多通道输入实例
Jan 17 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
python爬虫 requests-html的使用
Nov 30 Python
python源码剖析之PyObject详解
May 18 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下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
jquery重复提交请求的原因浅析
2014/05/23 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
Javascript缓存API
2016/06/14 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
Python实现动态图解析、合成与倒放
2018/01/18 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
使用Python实现分别输出每个数组
2019/12/06 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
财务出纳员岗位职责
2013/11/26 职场文书
开学典礼感言
2014/02/16 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
服务之星事迹材料
2014/05/03 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
酒桌上的开场白
2015/06/01 职场文书
2015年征兵工作总结
2015/07/23 职场文书
配置nginx负载均衡
2022/05/06 Servers