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

 

 

posted @   奶油冰激凌  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示