浅谈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程序员开发中常犯的10个错误
Jul 07 Python
Python中bisect的用法
Sep 23 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
pycharm远程调试openstack的图文教程
Nov 21 Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 Python
python 读取DICOM头文件的实例
May 07 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
基于Python实现用户管理系统
Feb 26 Python
python Tcp协议发送和接收信息的例子
Jul 22 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
python中append函数用法讲解
Dec 11 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 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
解析isset与is_null的区别
2013/08/09 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
javascript实用方法总结
2015/02/06 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
VUE 使用中踩过的坑
2018/02/08 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
python修改操作系统时间的方法
2015/05/18 Python
Python算法应用实战之栈详解
2017/02/04 Python
python paramiko模块学习分享
2017/08/23 Python
如何通过Python实现标签云算法
2019/07/02 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
房地产还款计划书
2014/01/10 职场文书
教师简历自我评价
2014/02/03 职场文书
入股协议书范本
2014/04/14 职场文书
运动会演讲稿300字
2014/08/25 职场文书
好人好事演讲稿
2014/09/01 职场文书
公司承诺书格式范文
2015/04/28 职场文书
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS