11.22

实验二:逻辑回归算法实现与测试

 

一、实验目的

深入理解对数几率回归(即逻辑回归的)的算法原理,能够使用 Python 语言实现对数

几率回归的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。

 

二、实验内容

(1)从 scikit-learn 库中加载 iris 数据集,使用留出法留出 1/3 的样本作为测试集(注

意同分布取样);

(2)使用训练集训练对数几率回归(逻辑回归)分类算法;

(3)使用五折交叉验证对模型性能(准确度、精度、召回率和 F1 值)进行评估和选

择;

(4)使用测试集,测试模型的性能,对测试结果进行分析,完成实验报告中实验二的

部分

 

三、算法步骤、代码、及结果

   1. 算法伪代码

导入必要的库。

加载iris数据集并分为特征集X和目标集y

将数据集分为训练集和测试集(测试集占1/3)。

创建逻辑回归模型。

使用训练集训练模型。

进行五折交叉验证并计算平均准确率。

使用模型预测测试集。

计算并打印准确率、精确率、召回率和F1分数。

打印分类报告。

 

   2. 算法主要代码

完整源代码\调用库方法(函数参数说明)

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score, KFold
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, classification_report

# 加载iris数据集
iris = load_iris()
X, y = iris.data, iris.target

# 使用train_test_split函数划分数据集,test_size=1/3表示测试集占1/3
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)

# 创建逻辑回归分类器实例
logreg = LogisticRegression(max_iter=200)

# 使用训练集数据训练模型
logreg.fit(X_train, y_train)

# 定义五折交叉验证
kf = KFold(n_splits=5, shuffle=True, random_state=42)

# 使用cross_val_score计算五折交叉验证的准确率
accuracies = cross_val_score(logreg, X_train, y_train, cv=kf, scoring='accuracy')
print(f'五折交叉验证的平均准确率: {np.mean(accuracies)}')

# 如果需要计算其他指标,可以手动分割数据集并计算

# 预测测试集
y_pred = logreg.predict(X_test)

# 计算各种性能指标
acc = accuracy_score(y_test, y_pred)
prec = precision_score(y_test, y_pred, average='weighted')
rec = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')

print(f'Accuracy: {acc}')
print(f'Precision: {prec}')
print(f'Recall: {rec}')
print(f'F1 Score: {f1}')

# 打印详细的分类报告
print(classification_report(y_test, y_pred, target_names=iris.target_names))

 

 

   3. 训练结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1

 

 

四、实验结果分析

1. 测试结果截图(包括:准确率、精度(查准率)、召回率(查全率)、F1

 

 

  1. 对比分析

准确率对比:

训练集上的五折交叉验证平均准确率为 0.95

测试集上的准确率为 0.94

分析:训练集和测试集的准确率非常接近,这表明模型在训练集和测试集上的表现较为一致,没有明显的过拟合现象。

精确率对比:

测试集上的加权平均精确率为 0.9409722222222223

分析:精确率较高,说明模型在预测正类时的正确率较高。

召回率对比:

测试集上的加权平均召回率为 0.94

分析:召回率较高,说明模型在预测所有正类时的覆盖率较高。

F1 值对比:

测试集上的加权平均 F1 值为 0.939948051948052

分析:F1 值是精确率和召回率的调和平均值,综合考虑了两者的平衡,较高的 F1 值表明模型在这两个方面都有较好的表现。

posted @   灬倾夏  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示