Python sklearn中model.predict与predict_proba的区别解析

江岸
江岸
发布时间:2026-10-14| 3人浏览过
原创

本文详细解析Python sklearn库中model.predict()与model.predict_proba()函数的核心区别。通过LogisticRegression示例代码,展示predict返回具体分类标签,而predict_proba返回各类别的概率分布。文章深入探讨了多分类场景下的概率输出逻辑,并解释了predict_proba结果如何依据self.classes_进行排序,帮助开发者准确理解模型输出格式。

下面直接通过代码示例进行说明。


clf=KMeans(n_clusters=5) #创建分类器对象
fit_clf=clf.fit(X) #用训练器数据拟合分类器模型
clf.predict(X) #也可以给新数据数据对其预测

print(clf.cluster_centers_) #输出5个类的聚类中心

y_pred = clf.fit_predict(X) #用训练器数据X拟合分类器模型并对训练器数据X进行预测

print(y_pred) #输出预测结果

predict与predict_proba的核心区别

补充说明:在sklearn中调用机器学习模型时,model.predict(x)与model.predict_proba(x)的功能存在显著差异。

model.predict_proba(x)与model.predict()不同,它返回的是预测为各个类别的概率值。具体而言,若存在N个分类结果,则每行输出包含N个概率值,分别对应每个类别的预测概率。例如,在0和1的二分类任务中,输出将包含两个概率值。

接下来通过具体代码实例进一步讲解。

Python 3代码实现如下:


# -*- coding: utf-8 -*-
"""
Created on Sat Jul 27 21:25:39 2019

@author: ZQQ
"""
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
import numpy as np
import warnings
warnings.filterwarnings("ignore")
# 这个方法只是解决了表面,没有根治

# 数据(特征,属性)
x_train = np.array([[1,2,3], 
          [1,5,4], 
          [2,2,2], 
          [4,5,6], 
          [3,5,4], 
          [1,7,2]]) 
# 数据的标签
y_train = np.array([1, 0, 1, 1, 0, 0]) 
 
# 测试数据
x_test = np.array([[2,1,2], 
          [3,2,6], 
          [2,6,4]]) 
 
# 导入模型
model = LogisticRegression() 
 
#model = RandomForestClassifier()

#model=XGBClassifier()

model.fit(x_train, y_train)

# 返回预测标签 
print(model.predict(x_test)) 
 
print('---------------------------------------')

# 返回预测属于某标签的概率 
print(model.predict_proba(x_test)) 
 

运行结果如下:

结果分析:

predict输出具体分类标签

使用model.predict()时:

输入[2,1,2]被预测为类别1

输入[3,2,6]被预测为类别1

输入[2,6,4]被预测为类别0

predict_proba输出类别概率

使用model.predict_proba()时:

输入[2,1,2]属于类别0的概率为0.19442289,属于类别1的概率为0.80557711

输入[3,2,6]属于类别0的概率为0.04163615,属于类别1的概率为0.95836385

输入[2,6,4]属于类别0的概率为0.83059324,属于类别1的概率为0.16940676

预测为类别0的概率值与预测为类别1的概率值之和恒等于1

同理,若标签类别增加至3类(0、1、2):

预测为类别0的概率值记为a

预测为类别1的概率值记为b

预测为类别2的概率值记为c

所有预测概率值之和满足a+b+c=1

概率输出的排序机制

注意:model.predict_proba()返回所有标签对应的可能性概率值,这些值的排序依据是什么?

该函数返回模型中每个类别的样本概率,类别顺序严格遵循self.classes_中的定义。

通常通过numpy.unique(label)方法,对label中的所有标签值进行去重并从小到大排序。

由此得到一个从小到大排列的唯一值序列,该序列直接对应model.predict_proba()输出行的顺序。

以上关于Python sklearn中model.predict与predict_proba用法的说明即为全部内容,希望能对读者有所帮助,也欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。