sklearn.metrics.roc_curve解析(转载)

本文详细介绍了sklearn.metrics模块,这是scikit-learn库中用于评估机器学习模型预测结果的重要部分。涵盖了各种评估指标,包括分类、回归和聚类任务的性能度量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LogisticRegression from sklearn.metrics import confusion_matrix, classification_report # 设置默认字体和解决负号显示问题 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 读取数据 data = pd.read_excel(r'C:\Users\冯雪玲\Desktop\北京市空气质量数据.xlsx') # 修正拼写错误 read_excel → read_excel data = data.replace(0, np.nan) # 替换0值为NaN data = data.dropna() # 删除缺失值 # 创建目标变量 # 修正字典语法错误(冒号→逗号,删除多余小数点) data['有无污染'] = data['质量等级'].map({ '优': 0, '良': 0, '轻度污染': 1, '中度污染': 1, # 修正 1.'重度污染' → 1, '重度污染': 1, '严重污染': 1}) # 划分特征与标签 X = data.loc[:, ['PM2.5', 'PM10', 'SO2', 'CO', 'NO2', 'O3']] Y = data.loc[:, '有无污染'] # 模型训练与评估 modelNB = GaussianNB() modelNB.fit(X, Y) modelLR = LogisticRegression() modelLR.fit(X, Y) # 输出朴素贝叶斯模型结果 print('朴素贝叶斯模型结果:\n', classification_report(Y, modelNB.predict(X))) import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, auc, precision_recall_curve # --------------------- 绘图代码 --------------------- fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10,4)) # ROC曲线 fpr, tpr, _ = roc_curve(Y, modelNB.predict_proba(X)[:, 1], pos_label=1) fpr1, tpr1, _ = roc_curve(Y, modelLR.predict_proba(X)[:, 1], pos_label=1) axes[0].plot(fpr, tpr, color='r', label=f'朴素贝叶斯 ROC (AUC={auc(fpr, tpr):.3f})') axes[0].plot(fpr1, tpr1, color='blue', label=f'逻辑回归 ROC (AUC={auc(fpr1, tpr1):.3f})') axes[0].plot([0, 1], [0, 1], linestyle='--', color='navy') axes[0].set(xlabel='假正率 (FPR)', ylabel='真正率 (TPR)', title='ROC曲线对比') axes[0].legend() # PR曲线 pre, rec, _ = precision_recall_curve(Y, modelNB.predict_proba(X)[:, 1], pos_label=1) pre1, rec1, _ = precision_recall_curve(Y, modelLR.predict_proba(X)[:, 1], pos_label=1) axes[1].plot(rec, pre, color='r', label=f'朴素贝叶斯 (AP={auc(rec, pre):.3f})') axes[1].plot(rec1, pre1, color='blue', label=f'逻辑回归 (AP={auc(rec1, pre1):.3f})') axes[1].set(xlabel='召回率 (Recall)', ylabel='精确率 (Precision)', title='P-R曲线对比') axes[1].legend() plt.tight_layout() plt.show()解析代码
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值