浅谈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中的多线程实例教程
Aug 27 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
Python 正则表达式实现计算器功能
Apr 29 Python
用pandas按列合并两个文件的实例
Apr 12 Python
Python常见MongoDB数据库操作实例总结
Jul 24 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
对python中不同模块(函数、类、变量)的调用详解
Jul 16 Python
python实现图片九宫格分割
Mar 07 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
python实现一个简单RPC框架的示例
Oct 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
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
浅析Jquery操作select
2016/12/13 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
机器学习python实战之决策树
2017/11/01 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
通过代码实例了解Python sys模块
2020/09/14 Python
室内设计实习自我鉴定
2013/09/25 职场文书
护士思想汇报
2014/01/12 职场文书
挂职自我鉴定
2014/02/26 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
面试通知短信
2015/04/20 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python