Sklearn中predict_proba函数用法及原理详解(以logistic回归为例)

网上对predict_proba的数学原理解释的太少了,也不明确,特意总结一下,并给出有些不能用该方法的原因及对策

函数形式

  • 输入:待预测的数据
  • 输出:数组形式为(样本个数,样本类别数),每一行代表某个样本在各个类上的概率,其和为1.

用于返回样本在各个类的概率分布,不适用于分类函数为:
sign(x)={+1x≥0−1x<0sign(x)=\begin{cases}+1& \text{x$\geq$0} \\-1& \text{x$<$0}\end{cases} sign(x)={+1−1​x≥0x<0​
的情况,因为值是离散的无法表示概率。

数学原理

以logistic回归为例

对于二分类

其基本原理是算出样本点到分类超平面的距离disdisdis,之后带入分类函数中,得到该样本为正类的概率为
prob+=sigmoid(dis)=11+e−disprob_+ = sigmoid(dis)=\frac{1}{1+e^{-dis}} prob+​=sigmoid(dis)=1+e−dis1​
负类概率为:prob−=1−prob+prob_-=1-prob_+prob−​=1−prob+​

对于多分类

二分类模型如logistic回归进行多分类(假设k类)时,往往采用OVR方法或者OVO方法,OVR方法产生了k个独立的分类器,此时,对于此样本,算出其到k个分类器的距离disi,dis_i,disi​,其中i=1,2,...ki=1,2,...ki=1,2,...k,带入分类函数sigmoid(x)sigmoid(x)sigmoid(x)中,得到:
prob+i=sigmoid(disi)=11+e−disiprob_{+i} = sigmoid(dis_i)=\frac{1}{1+e^{-dis_i}} prob+i​=sigmoid(disi​)=1+e−disi​1​
再将其进行归一化,即得到样本为第iii个类的概率:
probi=prob+i∑j=1kprob+jprob_i=\frac{prob_{+i}}{\sum_{j=1}^{k}{prob_{+j}}} probi​=∑j=1k​prob+j​prob+i​​

说明

对于perceptron这种模型,不能求其概率,主要原因是其分类函数为:
xsign(x)={+1x≥0−1x<0x sign(x)=\begin{cases}+1& \text{x$\geq$0} \\-1& \text{x$<$0}\end{cases} xsign(x)={+1−1​x≥0x<0​
是离散的,如果非要求样本为某类的概率,可以利用lsotonic或者sigmoid校准分类器,其原理可以参考链接:使用 Isotonic Regression 校准分类器,实际应用中可以采用的sklearn中模块为CalibratedClassifierCV,具体见链接:Python Scikit-learn Perceptron Output Probabilities

[1]https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Perceptron.html

[2]https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=predict_proba#sklearn.linear_model.LogisticRegression.predict_proba

[3]http://vividfree.github.io/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/2015/12/21/classifier-calibration-with-isotonic-regression
[4]https://stackoverflow.com/questions/31792580/python-scikit-learn-perceptron-output-probabilities

Sklearn中predict_proba函数用法及原理详解相关推荐

  1. python中的super用法详解_python super用法及原理详解

    这篇文章主要介绍了python super用法及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 super作为python的内建函数. ...

  2. groupby的用法及原理详解

    groupby的用法及原理详解_回家养老-CSDN博客_groupby 写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够sele ...

  3. 【夯实Spring Cloud】Spring Cloud中使用Hystrix实现断路器原理详解(上)

    本文属于[夯实Spring Cloud]系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货.系列目录如下: [夯实Spring Cloud]D ...

  4. PHP中cal_days_in_month函数和calendar扩展详解

    PHP中cal_days_in_month函数和calendar扩展详解 问题: 在开发中无意间发现cal_days_in_month函数不可使用.然后就开始研究学习. 1.cal_days_in_m ...

  5. python bisect_Python中bisect的用法及示例详解

    bisect是python内置模块,用于有序序列的插入和查找. 查找: bisect(array, item) 插入: insort(array,item) 查找 import bisect a = ...

  6. python中函数分为哪四类_Python函数参数分类原理详解

    1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号,隔开 案列: # 利用函数的参数,定义一个可以完成任意两个数 ...

  7. c语言中sign的用法,Excel教程中sign函数用法和实例详解

    第一,sign函数用法说明 excel教程中sign函数用于返回数字的符号.正数为1,零为0,负数为-1. sign函数语法:SIGN(number) SIGN符号函数(一般用sign(x)表示)是很 ...

  8. urlencode 与urldecode 函数字符编码原理详解

    中文字符编码研究系列第五期,详解 urlencode()与urldecode()函数字符编码原理,两个函数分别用于编码 URL 字符串和解码已编码的 URL 字符串,实现对中文字符的编码 <if ...

  9. c语言 product,product函数_Excel中product函数的使用教程详解

    Excel中的product函数是用来计算各参数的乘积的,在数学公式里,我们会经常用到.下面小编教你在Excel中product函数的使用方法,希望对你有帮助! Excel中product函数的使用方 ...

最新文章

  1. 一. synchronized 的局限性 与 Lock 的优点
  2. 『全球化产品』应该要避开的几个坑
  3. python安装whl_EN-mysqlclient库安装问题
  4. nagios 监控 mysql 读写比 R/W
  5. 信息系统服务器备机,医院信息系统业务连续性讨论:双机热备、RAC还是x86一体机?...
  6. 这本《Python+TensorFlow机器学习实战》给你送到家!
  7. Accumulator
  8. Spring与Struts框架整合
  9. owncloud mysql版本_Linux Deploy Owncloud php7.0+apache2+mysql5.7+owncloud9.1
  10. 星尘小组第十一周翻译-设计和优化索引
  11. mysql在linux下的完整安装
  12. SAS入门之(四)改变数据类型
  13. RDKit | 基于RDKit 的化合物预处理
  14. 产品需求分析神器:KANO模型分析法
  15. HashMap源码分析与实现
  16. ConneR and the A.R.C. Markland-N--- codeforces1293A
  17. OR1200处理器的计时器模块TT介绍
  18. 基于Ubuntu搭建CTFd平台(全网最全)
  19. 什么是TikTok云控
  20. Smarty-3.1.12配置

热门文章

  1. idog copy from,
  2. 金融数据类——全球股市
  3. PICT测试工具的安装及使用
  4. 行人重识别-REID
  5. 实例示范( 泰坦尼克沉船数据分析之一)
  6. 「Activiti精品 悟纤出品」核心类以及如何在SpringBoot集成说明 - 第328篇
  7. 英语高考计算机阅读答案解析,2021考研英语一阅读理解试题及答案解析(中公考研版)...
  8. 计算机可以唱什么音乐,5款经典的可以学习唱歌的app介绍
  9. MySQL数据库迁移详细步骤
  10. Tomcat 可以运行但localhost:8080打不开