10.30
实验二:逻辑回归算法实现与测试
一、实验目的
深入理解对数几率回归(即逻辑回归的)的算法原理,能够使用 Python 语言实现对数几率回归的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。
二、实验内容
(1)从 scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注
意同分布取样);
(2)使用训练集训练对数几率回归(逻辑回归)分类算法;
(3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选
择;
(4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验二的
部分。
三、算法步骤、代码、及结果
1. 算法伪代码
1. 导入必要的模块:
- 从sklearn.datasets加载iris数据集
- 从sklearn.model_selection导入train_test_split函数
- 从sklearn.linear_model导入LogisticRegression模型
- 从sklearn.model_selection导入cross_val_score用于交叉验证
- 从sklearn.metrics导入classification_report生成分类报告
2. 加载iris数据集:
- 获取特征数据X和目标标签y
3. 划分数据集:
- 使用train_test_split将数据集按1/3比例划分为训练集和测试集
- 使用stratify参数确保训练集和测试集的标签分布一致
4. 创建逻辑回归模型:
- 设置最大迭代次数max_iter=200
5. 训练模型:
- 使用训练集数据(X_train, y_train)训练模型
6. 进行交叉验证:
- 使用五折交叉验证(cv=5)评估模型准确度
- 计算并输出交叉验证的准确度均值
7. 重新训练模型:
- 重新使用训练集数据训练模型,以确保交叉验证后更新参数
8. 预测测试集:
- 使用训练好的模型对测试集进行预测
9. 打印性能报告:
- 生成并打印分类报告,包含准确度、精度、召回率和F1值等指标
2. 算法主要代码
完整源代码\调用库方法(函数参数说明)
from sklearn.datasets import load_iris # 用于加载数据集的模块 from sklearn.model_selection import train_test_split # 用于数据集划分的模块 # 加载iris数据集 iris = load_iris() X, y = iris.data, iris.target # X为特征数据,y为目标标签 # 使用留出法留出1/3的样本作为测试集,注意同分布取样 # train_test_split函数用于将数据集划分为训练集和测试集 # test_size=1/3 表示测试集占总数据集的比例为1/3 # random_state=42 表示随机数生成器的种子,保证每次划分结果一致 # stratify=y 表示按照目标变量y的类别比例进行分层抽样,保证训练集和测试集的分布一致 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y) from sklearn.linear_model import LogisticRegression # 导入逻辑回归模型 # 创建逻辑回归模型,max_iter=200表示最大迭代次数,因为逻辑回归是迭代算法 logistic_model = LogisticRegression(max_iter=200) # 训练模型,使用训练集数据和标签 logistic_model.fit(X_train, y_train) from sklearn.model_selection import cross_val_score # 用于交叉验证的模块 from sklearn.metrics import classification_report # 用于生成性能报告的模块 # 使用五折交叉验证评估模型性能,cv=5表示将数据集分为5份,进行5次训练和验证 # scoring='accuracy'表示使用准确度作为评分标准 scores = cross_val_score(logistic_model, X_train, y_train, cv=5, scoring='accuracy') # 打印交叉验证的准确度均值 print(f"Cross-validation scores: {scores.mean()}") # 训练模型并预测测试集 logistic_model.fit(X_train, y_train) # 重新训练模型,以确保交叉验证后模型参数更新 y_pred = logistic_model.predict(X_test) # 使用模型预测测试集 # 打印性能指标报告,包括准确度、精度、召回率和F1值 print(classification_report(y_test, y_pred))
3. 训练结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1)
四、实验结果分析
1. 测试结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!