浅谈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中查看变量内存地址的方法
May 05 Python
Zabbix实现微信报警功能
Oct 09 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
python检测IP地址变化并触发事件
Dec 26 Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
如何给Python代码进行加密
Jan 10 Python
python图片指定区域替换img.paste函数的使用
Apr 09 Python
python3.6使用SMTP协议发送邮件
May 20 Python
python 代码运行时间获取方式详解
Sep 18 Python
如何使用Python进行PDF图片识别OCR
Jan 22 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设计聊天室步步通
2006/10/09 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Python项目打包成二进制的方法
2020/12/30 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
恶意软件的定义
2014/11/12 面试题
解除劳动合同协议书(样本)
2014/10/02 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
初中生物教学随笔
2015/08/15 职场文书
幼师自荐信范文(2016推荐篇)
2016/01/28 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技