当前位置: 首页 > news >正文

信息检索(包含源码)

  • 实验目的
  1. 掌握逻辑回归模型在二分类问题中的应用方法
  2. 熟悉机器学习模型评估指标PR曲线(精确率-召回率曲线)和ROC曲线(受试者工作特征曲线)的绘制与分析
  3. 学习使用Python的scikit-learn库进行数据预处理、模型训练与评估
  4. 理解特征选择对分类模型性能的影响
  5. 培养数据可视化能力,掌握matplotlib库的绘图方法
  • 实验环境(仪器设备、软件)

Windows,python

  • 实验原理(或要求)
  1. 逻辑回归原理:通过Sigmoid函数将线性回归结果映射到(0,1)区间,建立特征与分类概率的回归关系,利用最大似然估计进行参数优化
  2. PR曲线原理:横轴表示召回率(Recall),纵轴表示精确率(Precision),反映不同阈值下分类器对正类的识别能力,适合类别不平衡场景
  3. ROC曲线原理:以假正率(FPR)为横轴,真正率(TPR)为纵轴,通过曲线下面积(AUC)量化模型整体性能,AUC越接近1说明分类性能越好
  4. 实验要求​​:
  1. 完成数据集的标准化分割(训练集/测试集=7:3)
  2. 正确实现逻辑回归模型的训练与预测
  3. 准确计算评估指标并绘制双曲线对比图
  4. 分析曲线特征与模型性能的对应关系
  • 实验步骤
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_recall_curve, roc_curve, auc# 加载鸢尾花数据集(只取前两个类别实现二分类)
iris = datasets.load_iris()
X = iris.data[:100, :2]  # 取前100个样本,前两个特征
y = iris.target[:100]    # 取前100个标签(类别0和1)# 划分训练测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)# 获取预测概率(取正类的概率)
y_scores = model.predict_proba(X_test)[:, 1]# 计算PR曲线数据
precision, recall, thresholds_pr = precision_recall_curve(y_test, y_scores)# 计算ROC曲线数据
fpr, tpr, thresholds_roc = roc_curve(y_test, y_scores)
roc_auc = auc(fpr, tpr)
# 创建画布
plt.figure(figsize=(12, 5))
# 绘制PR曲线
plt.subplot(1, 2, 1)
plt.plot(recall, precision, color='darkorange', lw=2, label='PR curve')
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve')
plt.legend(loc="lower left")
plt.grid(True)
# 绘制ROC曲线
plt.subplot(1, 2, 2)
plt.plot(fpr, tpr, color='darkblue', lw=2,label='ROC curve (AUC = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='gray', linestyle='--')  # 绘制对角线
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.grid(True)
plt.tight_layout()
plt.show()

  • 实验小结

本实验基于鸢尾花数据集前两个类别,通过逻辑回归模型实现了二分类任务,成功绘制了PR曲线和ROC曲线(AUC=0.98),验证了模型在样本均衡场景下的优异性能。实验发现两类线性可分样本的特征分布清晰,使模型在测试集上表现出高区分度,但受限于仅选取前两个特征和单一分类算法,未能考察多维特征交互与非线性的复杂分类场景,后续可通过引入更多特征对比和集成学习方法进一步提升模型泛化能力。

http://www.xdnf.cn/news/371161.html

相关文章:

  • 服务预热原理
  • 动态路由EIGRP的配置
  • AutoGen+Deepseek+chainlit的简单使用
  • iOS瀑布流布局的实现(swift)
  • HNUST湖南科技大学-软件测试期中复习考点(保命版)
  • Kubernetes应用发布方式完整流程指南
  • Dia浏览器:AI驱动浏览网页,究竟怎么样?(含注册申请体验流程)
  • Harness: 全流程 DevOps 解决方案,让持续集成如吃饭般简单
  • 【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型
  • QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口
  • Flask 调试的时候进入main函数两次
  • 机器学习扫盲系列-深入浅出“反向传播”(二)
  • 第21天打卡
  • 流动式起重机Q2考试的实操部分,重点复习内容包括哪些方面?
  • 路由策略和策略路由的区别以及配置案例
  • 【C++指南】STL容器的安全革命:如何封装Vector杜绝越界访问与迭代器失效?
  • 图像处理篇---opencv实现坐姿检测
  • 系统级编程(四):利用windows API使用操作系统剪切板
  • [学习]RTKLib详解:rtksvr.c与streamsvr.c
  • Vue基础(8)_监视属性、深度监视、监视的简写形式
  • 扩容 QCOW2 磁盘镜像文件
  • 将循环队列中的各元素向右移动n步collections.deque.rotate(n)
  • 当可视化遇上 CesiumJS:突破传统,打造前沿生产配套方案
  • K8S服务的请求访问转发原理
  • Octave 绘图快速入门指南
  • jdk多版本切换,通过 maven 指定编译jdk版本不生效,解决思路
  • 【金仓数据库征文】_金仓数据库在金融行业的两地三中心容灾架构实践
  • 黑马k8s(二)
  • Laravel 安全:批量赋值 fillable 与 guarded
  • PostgreSQL 的 pg_advisory_lock_shared 函数