浅谈sklearn中predict与predict_proba区别

 更新时间:2020年06月28日 11:01:27   作者:GitzLiu  
这篇文章主要介绍了浅谈sklearn中predict与predict_proba区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • pycharm实现增加运行时内存

    pycharm实现增加运行时内存

    这篇文章主要介绍了pycharm实现增加运行时内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 解决webdriver.Chrome()报错:Message:''chromedriver'' executable needs to be in Path

    解决webdriver.Chrome()报错:Message:''chromedriver'' executable n

    这篇文章主要介绍了解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python 多核并行计算的示例代码

    Python 多核并行计算的示例代码

    本篇文章主要介绍了Python 多核并行计算的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • python输入、数据类型转换及运算符方式

    python输入、数据类型转换及运算符方式

    这篇文章主要介绍了python输入、数据类型转换及运算符方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python学习之模块化程序设计示例详解

    Python学习之模块化程序设计示例详解

    程序设计的模块化指的是在进行程序设计时,把一个大的程序功能划分为若干个小的程序模块。每一个小程序模块实现一个确定的功能,并且在这些小程序模块实现的功能之间建立必要的联系。本文将利用示例详细介绍一下Python的模块化程序设计,需要的可以参考一下
    2022-03-03
  • 使用Python解析JSON的实现示例

    使用Python解析JSON的实现示例

    本文主要介绍了使用Python解析JSON的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Python连接SQLite数据库操作实战指南从入门到精通

    Python连接SQLite数据库操作实战指南从入门到精通

    在Python中使用SQLite进行数据库操作时,我们将深入研究SQLite数据库的创建、表格管理、数据插入、查询、更新和删除等关键主题,帮助你全面了解如何使用SQLite进行数据库操作
    2023-11-11
  • 用python生成一张壁纸实例代码

    用python生成一张壁纸实例代码

    大家好,本篇文章主要讲的是用python生成一张壁纸实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • python实现的简单窗口倒计时界面实例

    python实现的简单窗口倒计时界面实例

    这篇文章主要介绍了python实现的简单窗口倒计时界面,实例分析了Python基于Tkinter操作windows窗口界面的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • Python中itertools简介使用介绍

    Python中itertools简介使用介绍

    itertools是python内置的模块,使用简单且功能强大,itertools模块标准化了一个快速、高效利用内存的核心工具集,这些工具本身或组合都很有用,这篇文章主要介绍了Python中itertools详解,需要的朋友可以参考下
    2022-12-12

最新评论