浅谈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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
对pandas里的loc并列条件索引的实例讲解
Nov 15 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
Django 表单模型选择框如何使用分组
May 16 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
Aug 30 Python
Python sep参数使用方法详解
Feb 12 Python
python关于倒排列的知识点总结
Oct 13 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 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
页面乱码问题的根源及其分析
2013/08/09 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
php生成验证码函数
2015/10/20 PHP
javascript 精粹笔记
2010/05/09 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
Python使用gensim计算文档相似性
2016/04/10 Python
Python实现公历(阳历)转农历(阴历)的方法示例
2017/08/22 Python
python实现简易通讯录修改版
2018/03/13 Python
使用python进行拆分大文件的方法
2018/12/10 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
使用python实现滑动验证码功能
2019/08/05 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
Python hashlib模块的使用示例
2020/10/09 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
国际花店:Pickup Flowers
2020/04/10 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
个性与发展自我评价
2014/02/11 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
二人合伙经营协议书
2014/09/13 职场文书
2016年元旦主持词
2015/07/06 职场文书