📜  scikit 学习 roc 曲线 - Python (1)

📅  最后修改于: 2023-12-03 14:47:18.134000             🧑  作者: Mango

Scikit-Learn 学习 ROC 曲线 - Python

在机器学习中,我们经常需要评估分类模型的性能。ROC(Receiver Operating Characteristic)曲线是评估二分类模型质量的常用工具之一,它能够显示分类器在各种阈值下的真阳率和假阳率之间的权衡关系。

Scikit-Learn是一个功能强大的Python机器学习库,它提供了一些方便的工具来计算和绘制ROC曲线。下面是使用Scikit-Learn学习ROC曲线的步骤:

1. 导入所需的库

开始之前,我们需要确保已经安装了Scikit-Learn和Matplotlib库。使用以下代码导入必要的库:

import numpy as np
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
2. 创建一个二分类模型

为了演示ROC曲线的计算和绘制过程,我们首先需要创建一个二分类模型。这可以是您正在处理的任何分类问题的分类器。

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# 生成一个具有1000个样本和20个特征的人工数据集
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化逻辑回归模型
model = LogisticRegression()

# 训练模型
model.fit(X_train, y_train)
3. 计算预测概率

接下来,我们需要使用训练好的模型对测试集样本进行预测,并计算每个样本属于正类的预测概率。

# 预测样本属于正类的概率
y_scores = model.predict_proba(X_test)[:, 1]
4. 计算ROC曲线

使用roc_curve函数计算真阳率(TPR)、假阳率(FPR)和阈值:

fpr, tpr, thresholds = roc_curve(y_test, y_scores)
5. 计算曲线下面积(AUC)

使用auc函数计算ROC曲线下的面积,即AUC值:

roc_auc = auc(fpr, tpr)
6. 绘制ROC曲线

使用Matplotlib库绘制ROC曲线,同时在图表中添加AUC值和对角线作为参考:

# 绘制ROC曲线
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--', label='Random guess')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()

以上代码会生成一个包含ROC曲线的图表,并在图表上标注AUC值和对角线(随机猜测的曲线)。

这就是使用Scikit-Learn学习ROC曲线的基本步骤!您可以根据自己的分类模型和数据集进行相应的调整和修改。

希望这篇介绍对您学习Scikit-Learn中的ROC曲线有所帮助!