首页 > 编程语言 >机器学习实验二:逻辑回归算法实现与测试

机器学习实验二:逻辑回归算法实现与测试

时间:2024-12-21 16:20:59浏览次数:8  
标签:逻辑 score 算法 train 测试 test import sklearn

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

一、实验目的

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

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

 

二、实验内容

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

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

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

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

 

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

   1. 算法伪代码

加载数据集  

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

 

创建逻辑回归模型  

使用训练集进行模型训练  

 

使用五折交叉验证评估模型性能  

计算准确率,精度,召回率,F1 值  

 

在测试集上预测  

计算并输出测试集的准确率,精度,召回率,F1 值

   2. 算法主要代码

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

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

# 1. 加载数据集并划分训练集和测试集
iris = load_iris()
X = iris.data
y = iris.target

# 增加测试集比例
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=42)  # 调整test_size0.5

# 2. 使用标准化处理特征
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# 3. 使用训练集训练逻辑回归分类模型, 增加最大迭代次数
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)

# 4. 使用5折交叉验证评估模型性能
accuracy = cross_val_score(model, X_train, y_train, cv=5, scoring='accuracy')
precision = cross_val_score(model, X_train, y_train, cv=5, scoring='precision_macro')
recall = cross_val_score(model, X_train, y_train, cv=5, scoring='recall_macro')
f1 = cross_val_score(model, X_train, y_train, cv=5, scoring='f1_macro')

print(f'训练集上的准确率 Accuracy: {accuracy.mean():.2f} ± {accuracy.std():.2f}')
print(f'训练集上的精确率 Precision: {precision.mean():.2f} ± {precision.std():.2f}')
print(f'训练集上的召回率 Recall: {recall.mean():.2f} ± {recall.std():.2f}')
print(f'训练集上的F1分数 F1-score: {f1.mean():.2f} ± {f1.std():.2f}')

# 5. 使用测试集评估模型性能,并对结果进行分析
y_pred = model.predict(X_test)

test_accuracy = accuracy_score(y_test, y_pred)
test_precision = precision_score(y_test, y_pred, average='macro')
test_recall = recall_score(y_test, y_pred, average='macro')
test_f1 = f1_score(y_test, y_pred, average='macro')

print(f'测试集准确率: {test_accuracy:.2f}')
print(f'测试集精确率: {test_precision:.2f}')
print(f'测试集召回率: {test_recall:.2f}')
print(f'测试集 F1 分数: {test_f1:.2f}')

 

 

调用库方法

 

1. load_iris

加载 Iris 数据集。

from sklearn.datasets import load_iris  

 

参数:

return_X_y: 如果为 True,返回特征和目标。如果为 False,返回一个包含数据的对象(默认值为 False)

返回值:

返回一个包含特征和目标的对象,通常通过 iris.data 和 iris.target 获取。

 

2. train_test_split

将数据随机划分为训练集和测试集。

from sklearn.model_selection import train_test_split  

 

参数:

test_size: 测试集占比(0-1之间的小数,或具体数目)。

random_state: 随机种子(确保划分可重现)。

stratify: 按类别比例划分(确保训练集和测试集类别分布一致)。

 

返回值:

返回划分后的训练数据和测试数据。

 

3. LogisticRegression

创建逻辑回归模型。

from sklearn.linear_model import LogisticRegression  

 

参数:

max_iter: 最大迭代次数(用来确保模型收敛)。

 

方法:

fit(X, y): 用于训练模型,X 是特征,y 是目标。

 

4. cross_val_score

进行交叉验证评估模型性能。

from sklearn.model_selection import cross_val_score

 

参数:

estimator: 要评估的模型。

X: 特征数据。

y: 目标数据。

cv: 交叉验证折数(默认5)。

 

返回值:

返回交叉验证的分数数组。

 

  1. 评价指标函数

准确率:

from sklearn.metrics import accuracy_score  

accuracy_score(y_true, y_pred)  

 

精确率:

from sklearn.metrics import precision_score  

precision_score(y_true, y_pred, average='macro')  

 

召回率:

from sklearn.metrics import recall_score  

recall_score(y_true, y_pred, average='macro')  

 

F1 分数:

from sklearn.metrics import f1_score  

f1_score(y_true, y_pred, average='macro')  

 

参数:

y_true: 真实标签。

y_pred: 预测标签。

average: 计算多类别的评估方法('macro'表示对每个类别计算得分,然后取平均)。

 

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

 

 

四、实验结果分析

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

 

 

2. 对比分析

训练集上的准确率(92%)和其他指标(精确率、召回率、F1分数)都在0.92左右,表明模型在训练数据上的表现是相对稳定和一致的。

相较之下,测试集的所有性能指标都达到了接近1.00的水平(99%),这表明模型在未见数据(测试集)上的表现非常好。

 

 

五、心得体会

 

通过本次实验,我深入理解了逻辑回归算法的原理及其在实际问题中的应用。逻辑回归虽然是一个简单的线性模型,但在二分类问题上表现出色,并且具有解释性强的特点。

在实验过程中,我遇到了数据不平衡的问题,因为 iris 数据集原本有三个类别,而我为了简化问题只选择了前两个类别。这在实际应用中是一个需要注意的问题,因为数据不平衡可能会影响模型的性能。为了解决这个问题,我可以尝试使用不同的采样方法,如过采样、欠采样或综合采样。

五折交叉验证的使用让我更加深入地理解了模型在不同数据集上的表现,并且提供了一种可靠的模型性能评估手段。通过调整模型的参数,我观察到了模型性能的变化,这加深了我对参数调优的理解。

使用测试集对模型进行测试时,我能够直观地看到模型在实际数据上的表现,并与五折交叉验证的结果进行对比。这有助于我分析模型的泛化能力,并为后续的模型优化提供了方向。

总的来说,这次实验不仅提高了我的编程能力,还加深了我对机器学习算法的理解,特别是逻辑回归算法的应用和调优。

 

标签:逻辑,score,算法,train,测试,test,import,sklearn
From: https://www.cnblogs.com/drz1145141919810/p/18620864

相关文章

  • 机器学习实验四:SMO 算法实现与测试
    实验四:SMO算法实现与测试一、实验目的 深入理解支持向量机(SVM)的算法原理,能够使用Python语言实现支持向量机的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本作为测试集(注意同分......
  • 机器学习实验五:BP 神经网络算法实现与测试
    实验五:BP神经网络算法实现与测试一、实验目的深入理解BP神经网络的算法原理,能够使用Python语言实现BP神经网络的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本作为测试集(注......
  • 基于云原生serverless技术实现轻量级接口自动化测试
    思路云原生实际情况下我们可以基于Serverless技术实现更加-轻量级接口自动化测试,可降低部署运维成本。Serverless能够将应用分为研发域和运维域,使两者独立迭代,降低运维成本,提升研发效率。1)Python脚本编写接口自动化用例2)部署于配置云函数servless调度运行,可以实现接口自动化与系......
  • KMP算法
    更新日志2024/12/21:开工。作用KMP算法本质作用是求字符串前缀的最长border。border:同时是一个字符串前缀和后缀的字符串,称为前者的border。常见的,我们可以使用它进行字符串匹配。思路假如我们要在\(s_1\)中匹配\(s_2\)。我们使用nxt数组储存\(s_2\)所有前......
  • 计算机视觉:YOLO V5目标检测算法模型
    1.YOLOV5模型概述1.1YOLOv5的概念YOLOv5是一种基于深度学习的目标检测模型,相较于YOLOv4,YOLOv5模型在目标检测精度和速度上都有了显著的提升。YOLOv5模型基于PyTorch开发,利用主干网络、检测头和损失函数等模块,能够实现对图像中多个目标的快速检测和定位。1.2YOLOv5模型......
  • 解锁自动化测试工具选择密码,轻松选到“心头好”
    公众号:测试工程师成长之路一、明确选择自动化测试工具的重要性在当今快节奏的软件开发领域,自动化测试工具已成为不可或缺的关键组成部分。它们能够显著提高测试效率,将测试人员从重复繁琐的手工测试中解放出来,从而大幅减少人力成本的投入。对于小型初创项目而言,合适的自......
  • 冒烟测试:软件质量的“守门员”
    公众号:测试工程师成长之路一、引言简述软件测试领域中冒烟测试的受关注情况在当今的软件测试领域,冒烟测试正日益受到广泛关注。它最初的概念来源于电路板测试,当电路板拼接或组装完成后,进行通电测试,若冒烟则意味着存在缺陷。后来这一概念被引入到软件开发当中,成为了软件......
  • ChatGPT生成接口测试用例(二)
    5.1.4自动生成测试数据       测试数据的生成通常是接口测试的一个烦琐任务。ChatGPT可以帮助测试团队生成测试数据,包括各种输入和它们的组合。测试人员可以描述他们需要的数据类型和范围,ChatGPT可以生成符合要求的测试数据,从而减轻测试人员的负担。对于一个在线预......
  • 【Django】测试带有 CSRF 验证的 POST 表单 API 报错:Forbidden (CSRF cookie not set.
    【Django】测试带有CSRF验证的POST表单API报错:Forbidden(CSRFcookienotset.)问题描述Django使用Apifox测试POST表单报错。Forbidden(CSRFcookienotset.):/api/parse[20/Dec/202415:17:25]"POST//api/parseHTTP/1.1"4032855原因分析要在使......
  • 【软件测试】Postman接口测试
    一、安装Postman打开官网下载地址DownloadPostman|GetStartedforFree,点击DownloadtheApp即可下载当前系统下最新版本的Postman,如图1所示。Postman的安装非常简单,安装成功后打开软件,初次登录时会进入注册界面要求注册(CreateAccount),可以跳过注册直接进入Postman。二......