sklearn的predict_proba使用说明


Posted in Python onJune 28, 2020

发现个很有用的方法——predict_proba

今天在做数据预测的时候用到了,感觉很不错,所以记录分享一下,以后可能会经常用到。

我的理解:predict_proba不同于predict,它返回的预测值为,获得所有结果的概率。(有多少个分类结果,每行就有多少个概率,以至于它对每个结果都有一个可能,如0、1就有两个概率)

举例:

获取数据及预测代码:

from sklearn.linear_model import LogisticRegression
import numpy as np
 
train_X = np.array(np.random.randint(0,10,size=30).reshape(10,3))
train_y = np.array(np.random.randint(0,2,size=10))
test_X = np.array(np.random.randint(0,10,size=12).reshape(4,3))
 
model = LogisticRegression()
model.fit(train_X,train_y)
test_y = model.predict_proba(test_X)
 
print(train_X)
print(train_y)
print(test_y)

训练数据

[[2 9 8]
 [0 8 5]
 [7 1 2]
 [8 4 6]
 [8 8 3]
 [7 2 7]
 [6 4 3]
 [1 4 4]
 [1 9 3]
 [3 4 7]]

训练结果,与训练数据一一对应:

[1 1 1 0 1 1 0 0 0 1]

测试数据:

[[4 3 0]  #测试数据
 [3 0 4]
 [2 9 5]
 [2 8 5]]

测试结果,与测试数据一一对应:

[[0.48753831 0.51246169] 
 [0.58182694 0.41817306]
 [0.85361393 0.14638607]
 [0.57018655 0.42981345]]

可以看出,有四行两列,每行对应一条预测数据,两列分别对应 对于0、1的预测概率(左边概率大于0.5则为0,反之为1)

我们来看看使用predict方法获得的结果:

test_y = model.predict(test_X)
print(test_y)

输出结果:[1,0,0,0]

所以有的情况下predict_proba还是很有用的,它可以获得对每种可能结果的概率,使用predict则是直接获得唯一的预测结果,所以在使用的时候,应该灵活使用。

补充一个知识点:关于预测结果标签如何与原来标签相对应

predict_proba返回所有标签值可能性概率值,这些值是如何排序的呢?

返回模型中每个类的样本概率,其中类按类self.classes_进行排序。

其中关键的步骤为numpy的unique方法,即通过np.unique(Label)方法,对Label中的所有标签值进行从小到大的去重排序。得到一个从小到大唯一值的排序。这也就对应于predict_proba的行返回结果。

补充知识: python sklearn decision_function、predict_proba、predict

看代码~

import matplotlib.pyplot as plt
import numpy as np
from sklearn.svm import SVC
X = np.array([[-1,-1],[-2,-1],[1,1],[2,1],[-1,1],[-1,2],[1,-1],[1,-2]])
y = np.array([0,0,1,1,2,2,3,3])
# y=np.array([1,1,2,2,3,3,4,4])
# clf = SVC(decision_function_shape="ovr",probability=True)
clf = SVC(probability=True)
clf.fit(X, y)
print(clf.decision_function(X))
'''
对于n分类,会有n个分类器,然后,任意两个分类器都可以算出一个分类界面,这样,用decision_function()时,对于任意一个样例,就会有n*(n-1)/2个值。
任意两个分类器可以算出一个分类界面,然后这个值就是距离分类界面的距离。
我想,这个函数是为了统计画图,对于二分类时最明显,用来统计每个点离超平面有多远,为了在空间中直观的表示数据以及画超平面还有间隔平面等。
decision_function_shape="ovr"时是4个值,为ovo时是6个值。
'''
print(clf.predict(X))
clf.predict_proba(X) #这个是得分,每个分类器的得分,取最大得分对应的类。
#画图
plot_step=0.02
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),
           np.arange(y_min, y_max, plot_step))
 
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) #对坐标风格上的点进行预测,来画分界面。其实最终看到的类的分界线就是分界面的边界线。
Z = Z.reshape(xx.shape)
cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)
plt.axis("tight")
 
class_names="ABCD"
plot_colors="rybg"
for i, n, c in zip(range(4), class_names, plot_colors):
  idx = np.where(y == i) #i为0或者1,两个类
  plt.scatter(X[idx, 0], X[idx, 1],
        c=c, cmap=plt.cm.Paired,
        label="Class %s" % n)
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.legend(loc='upper right')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Decision Boundary')
plt.show()

sklearn的predict_proba使用说明

以上这篇sklearn的predict_proba使用说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
Python实现的简单发送邮件脚本分享
Nov 07 Python
Python性能优化技巧
Mar 09 Python
python使用urllib2实现发送带cookie的请求
Apr 28 Python
python复制文件的方法实例详解
May 22 Python
python中import reload __import__的区别详解
Oct 16 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
详解Python下ftp上传文件linux服务器
Jun 21 Python
Python闭包思想与用法浅析
Dec 27 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
python中rc1什么意思
Jun 19 Python
基于python实现ROC曲线绘制广场解析
Jun 28 #Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 #Python
浅谈sklearn中predict与predict_proba区别
Jun 28 #Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 #Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 #Python
PyTorch的torch.cat用法
Jun 28 #Python
使用pytorch 筛选出一定范围的值
Jun 28 #Python
You might like
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
php语法检查的方法总结
2019/01/21 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
分享别人写的一个小型js框架
2007/08/13 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
Python将图片转换为字符画的方法
2020/06/16 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
如何通过雪花算法用Python实现一个简单的发号器
2019/07/03 Python
python基于property()函数定义属性
2020/01/22 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
python与js主要区别点总结
2020/09/13 Python
Python之Sklearn使用入门教程
2021/02/19 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
决心书范文
2014/03/11 职场文书
产品委托授权书范本
2014/09/16 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2014年团委工作总结
2014/11/13 职场文书
内乡县衙导游词
2015/02/05 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python