浅谈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 paramiko实现ssh远程访问的方法
Dec 03 Python
Python中的匿名函数使用简介
Apr 27 Python
python使用xlrd模块读写Excel文件的方法
May 06 Python
python创建进程fork用法
Jun 04 Python
Python如何实现MySQL实例初始化详解
Nov 06 Python
Python单元测试简单示例
Jul 03 Python
Python3实现定时任务的四种方式
Jun 03 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
基于python判断目录或者文件代码实例
Nov 29 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
python super函数使用方法详解
Feb 14 Python
详解python os.path.exists判断文件或文件夹是否存在
Nov 16 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取整数函数常用的四种方法小结
2012/07/05 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
Extjs Ajax 乱码问题解决方案
2009/04/15 Javascript
JavaScript 乱码问题
2009/08/06 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
前端微信支付js代码
2016/07/25 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
Python实现控制台输入密码的方法
2015/05/29 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
python设置值及NaN值处理方法
2018/07/03 Python
Django添加feeds功能的示例
2018/08/07 Python
pandas分区间,算频率的实例
2019/07/04 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
python实现移动木板小游戏
2020/10/09 Python
学生会招新策划书
2014/02/14 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
《火烧云》教学反思
2014/04/12 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
5.12护士节活动总结
2015/02/10 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书