浅谈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 面向对象 成员的访问约束
Dec 23 Python
python 文件和路径操作函数小结
Nov 23 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
Python使用SQLite和Excel操作进行数据分析
Jan 20 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
python并发爬虫实用工具tomorrow实用解析
Sep 25 Python
python实现简易淘宝购物
Nov 22 Python
python科学计算之numpy——ufunc函数用法
Nov 25 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比较两个字符串长度的方法
2015/07/13 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
python uuid模块使用实例
2015/04/08 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
pycharm设置注释颜色的方法
2018/05/23 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
物业管理公司实习生自我鉴定
2013/09/19 职场文书
励志演讲稿800字
2014/08/21 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
原型和原型链 prototype和proto的区别详情
2021/11/02 Javascript
Minikube搭建Kubernetes集群
2022/03/31 Servers