读取csv文件并绘制ROC和P-R曲线图
时间: 2025-03-17 08:01:25 浏览: 39
### 如何使用 Python Pandas 读取 CSV 文件并绘制 ROC 和 P-R 曲线
#### 数据准备
为了绘制 ROC 和 Precision-Recall (P-R) 曲线,首先需要加载数据。可以利用 `pandas` 的 `read_csv()` 方法来完成这一操作。
```python
import pandas as pd
# 加载数据
data = pd.read_csv('your_data_file.csv', encoding='utf-8')
data = data.fillna(-1) # 处理缺失值
print(data.head()) # 查看前几行数据
```
上述代码片段展示了如何从本地路径加载 CSV 文件,并填充其中的缺失值[^2]。
---
#### 划分训练集和测试集
在构建机器学习模型之前,通常会将数据划分为训练集和测试集:
```python
from sklearn.model_selection import train_test_split
X = data.iloc[:, :-1] # 特征列
y = data.iloc[:, -1] # 标签列
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
这里我们按照 70% 训练集和 30% 测试集的比例分割数据。
---
#### 构建分类模型
假设已经选择了某种分类算法(如逻辑回归),可以通过以下方式拟合模型并获取预测概率值:
```python
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, precision_recall_curve, auc
model = LogisticRegression()
model.fit(X_train, y_train)
# 获取预测的概率值
y_prob = model.predict_proba(X_test)[:, 1]
```
此处,`predict_proba()` 函数返回的是正类别的概率估计值[^3]。
---
#### 绘制 ROC 曲线
ROC 曲线用于评估二分类模型的表现,其核心指标是假阳率 (False Positive Rate, FPR) 和真阳率 (True Positive Rate, TPR)。
```python
fpr, tpr, thresholds = roc_curve(y_test, y_prob)
roc_auc = auc(fpr, tpr)
plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (area = {roc_auc:.2f})')
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.show()
```
这段代码实现了 ROC 曲线的绘制,并标注了 AUC 值作为性能衡量标准。
---
#### 绘制 Precision-Recall 曲线
Precision-Recall 曲线适用于类别分布不均衡的情况,它反映了精确率 (Precision) 随召回率 (Recall) 变化的趋势。
```python
precision, recall, _ = precision_recall_curve(y_test, y_prob)
pr_auc = auc(recall, precision)
plt.figure(figsize=(8, 6))
plt.plot(recall, precision, color='blue', lw=2, label=f'PR curve (area = {pr_auc:.2f})')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve')
plt.legend(loc="upper right")
plt.show()
```
此部分代码完成了 Precision-Recall 曲线的可视化,并同样计算了曲线下面积 (AUC)[^3]。
---
### 总结
通过以上步骤,能够成功地使用 Python 中的 Pandas 库加载 CSV 文件,并借助 Matplotlib 或 Seaborn 完成 ROC 和 Precision-Recall 曲线的绘制。这些图表对于评估分类模型的效果至关重要[^4]。
---
阅读全文
相关推荐
















