机器学习基于Python绘制PR曲线和ROC曲线 您所在的位置:网站首页 python画pr曲线 机器学习基于Python绘制PR曲线和ROC曲线

机器学习基于Python绘制PR曲线和ROC曲线

2024-07-12 10:50| 来源: 网络整理| 查看: 265

一、PR曲线 1、定义及意义:

PR曲线,即Precision-Recall Curve,中文译做精确度-召回率曲线,是一种常用于评估二元分类问题模型表现的工具。

精确度(Precision)和召回率(Recall)是评价二元分类问题模型性能的两个相互关联的指标:

精确度(Precision):对于预测结果是正例的样本,实际上也是正例的概率。较高的精确度意味着模型对于预测出的正例有着较高的准确度。

召回率(Recall):对于所有实际上是正例的样本,被模型预测为正例的概率。较高的召回率意味着模型能够找出所有正例的绝大部分。

PR曲线将这两个指标组合在一起,以精确度(Precision)作为Y轴,召回率(Recall)作为X轴,绘制了对于每个可能的决策阈值,模型的精确度和召回率的表现。这样,PR曲线描绘了模型在精确度和召回率之间权衡的过程,对于模型在不同决策阈值条件下的性能表现提供了全面的视觉表示。

2、源码:

# 导入必要的库

from sklearn.datasets import load_breast_cancer

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import precision_recall_curve

import matplotlib.pyplot as plt

# 加载数据

data = load_breast_cancer()

X = data['data']

y = data['target']

# 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型

model = LogisticRegression(solver='liblinear')

model.fit(X_train, y_train)

# 得到测试集的预测概率

probs = model.predict_proba(X_test)[:, 1]

# 计算PR曲线的数据点

precision, recall, _ = precision_recall_curve(y_test, probs)

# 绘制PR曲线

plt.figure(figsize=(8, 6))

plt.plot(recall, precision, marker='.')

plt.title('Precision-Recall Curve')

plt.xlabel('Recall')

plt.ylabel('Precision')

plt.grid()

plt.show()

3、显示结果

二、ROC曲线 1、定义及意义

ROC曲线,全称为"Receiver Operating Characteristic"曲线,又称为受试者工作特性曲线,是一种用于评估二元分类问题模型性能的图形化工具。

ROC曲线的横坐标是"假正类率"(False Positive Rate, FPR),纵坐标是"真正类率"(True Positive Rate, TPR)。FPR和TPR的定义如下:

真正类率(TPR,也叫召回率):在所有实际为正类的样本中,被正确预测为正类的样本所占的比例;

假正类率(FPR):在所有实际为负类的样本中,被错误预测为正类的样本所占的比例。

ROC曲线是通过在各种分类阈值设定下,绘制出FPR和TPR的变化情况得到的。曲线下的面积(Area under the ROC Curve, AUC)可以用来度量模型的整体性能。AUC值越接近1,代表模型的性能越好;AUC值为0.5则代表模型没有预测能力。

综合来看,ROC曲线不仅可以帮助我们了解模型在不同阈值下的表现,还能量化地评价模型的整体性能。

2、源码:

# 导入必要的库

from sklearn.datasets import load_breast_cancer

from sklearn.model_selection import train_test_split

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import roc_curve, auc

import matplotlib.pyplot as plt

# 加载数据

data = load_breast_cancer()

X = data['data']

y = data['target']

# 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型

model = LogisticRegression(solver='liblinear')

model.fit(X_train, y_train)

# 得到测试集的预测概率

probs = model.predict_proba(X_test)[:, 1]

# 计算ROC曲线的数据点

fpr, tpr, _ = roc_curve(y_test, probs)

roc_auc = auc(fpr, tpr)

# 绘制ROC曲线

plt.figure(figsize=(8, 6))

plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)

plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')

plt.xlim([0.0, 1.0])

plt.ylim([0.0, 1.05])

plt.xlabel('False Positive Rate')

plt.ylabel('True Positive Rate')

plt.title('Receiver Operating Characteristic Curve')

plt.legend(loc='lower right')

plt.grid()

plt.show()

3、显示结果



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有