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

news/2024/12/2 13:00:10/文章来源:https://www.cnblogs.com/yindantong/p/18581670

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

一、实验目的

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

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

 

二、实验内容

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

意同分布取样);

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

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

择;

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

部分。

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

   1. 算法伪代码

开始

 

导入必要的库

    导入 pandas

    导入 PCA sklearn.decomposition

    导入 matplotlib.pyplot

    导入 train_test_split sklearn.model_selection

    导入 DecisionTreeClassifier sklearn.tree

    导入 precision_score, recall_score, f1_score sklearn.metrics

 

定义数据文件路径

读取 CSV 文件到数据框 df

打印数据量

打印数据框的前几行

打印空值数量统计

打印数据框的描述性统计

删除数据框中的 'Id'

定义标签索引,将物种名称映射到数字

'Species' 列中的物种名称转换为数字标签

 

提取特征和标签

    特征 X = df 中的四个特征列

    标签 y = df 中的 'Species'

 

进行主成分分析 (PCA)

    创建 PCA 对象,设置主成分数量为 2

    拟合并转换特征数据 X

 

绘制 PCA 结果的散点图

    使用特征数据的前两个主成分绘制散点图

    根据标签 y 设置点的颜色

    显示图形

 

将数据集拆分为训练集和测试集

    使用 stratify 参数确保每个类的比例相同

    设置随机种子以确保可重复性

 

打印训练集和测试集的数据量

 

创建决策树分类器

    设置标准为 'gini'

    设置分割策略为 'best'

    设置最大深度为 5

    设置类别权重为 'balanced'

    设置随机种子以确保可重复性

 

训练决策树分类器

使用测试集进行预测

 

打印精确度

打印召回率

打印 F1 分数

 

结束

   2. 算法主要代码

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

'''

Created on 20241123

 

@author: 席酒

'''

 

import sklearn

from sklearn import datasets

import numpy as np

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

from sklearn.preprocessing import StandardScaler

from sklearn.linear_model import Perceptron

 

# 加载iris数据集

iris = datasets.load_iris()

 

# 只提取后两类特征

X = iris.data[:, [2, 3]]

y = iris.target

 

# 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

 

# 特征缩放

sc = StandardScaler()

sc.fit(X_train)

X_train_std = sc.transform(X_train)

X_test_std = sc.transform(X_test)

 

# 训练感知机模型

ppn = Perceptron(max_iter=40, eta0=0.1, random_state=0)

ppn.fit(X_train_std, y_train)

 

# 计算训练集预测结果

y_train_pred = ppn.predict(X_train_std)

 

# 计算训练集的准确率、精度、召回率和F1分数

train_accuracy = accuracy_score(y_train, y_train_pred)

train_precision = precision_score(y_train, y_train_pred, average='weighted')

train_recall = recall_score(y_train, y_train_pred, average='weighted')

train_f1 = f1_score(y_train, y_train_pred, average='weighted')

 

# 输出训练结果

print("Training Accuracy:", train_accuracy)

print("Training Precision:", train_precision)

print("Training Recall:", train_recall)

print("Training F1 Score:", train_f1)

 

# 计算测试集预测结果

y_pred = ppn.predict(X_test_std)

 

# 计算测试集的准确率、精度、召回率和F1分数

test_accuracy = accuracy_score(y_test, y_pred)

test_precision = precision_score(y_test, y_pred, average='weighted')

test_recall = recall_score(y_test, y_pred, average='weighted')

test_f1 = f1_score(y_test, y_pred, average='weighted')

 

# 输出测试结果

print("Testing Accuracy:", test_accuracy)

print("Testing Precision:", test_precision)

print("Testing Recall:", test_recall)

print("Testing F1 Score:", test_f1)

 

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

 

 

 

四、实验结果分析

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

 

 

 

2. 对比分析

训练集的准确率为 92.38%,而测试集的准确率为 88.89%。模型在训练集上表现良好,但在测试集上的表现略有下降。训练集的精度为 92.41%,测试集的精度为 89.50%。测试集的精度略低于训练集,模型在测试集上预测的正类样本中,实际为正类的比例有所下降。训练集的召回率为 92.38%,测试集的召回率为 88.89%。测试集的召回率与训练集相同,模型在测试集上能够识别出大部分的正类样本,但仍然有一定的下降。训练集的 F1 分数为 92.22%,测试集的 F1 分数为 88.67%。测试集的 F1 分数低于训练集,进一步表明模型在测试集上的整体表现不如训练集。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/845395.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.25实验 23:策略模式

[实验任务一]:旅行方式的选择 旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。 实验要求: 1. 画出对应的类图;2. 提交源代码; package strategy;public class Person {private Tour…

vxe-table 设置斑马线条纹样式

vxe-table 设置斑马线条纹样式,通过设置 stripe 参数 官网:https://vxetable.cn 表格<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div> </template><script> export default {data () {const gridOpti…

Lsky Pro挂载alist

首先需要去修改lsky代码,如果是docker可以 docker exec -it lsky-pro /bin/bash 然后安装个vim apt install vim cd app cd Services/ ls vi ImageService.php 然后vim输入 :set nu 显示行号,然后找到345行,粘贴进去 authType => 1, lwebdav存储策略问题 Issue #497 ls…

使用Go语言开发的一款轻量级可视化服务器监控监控软件

大家好,我是兔兔,兔兔答题的开发者。兔兔答题是一款简单、易用的答题系统,可应用于微信考试、付费考试、社会调查问卷、明星知识问答、员工培训考核、模拟自测、企业面试、试题库等多种场景。兔兔答题官网文档 进入给大家分享的内容是一款轻量级的日志可视化图形工具。在兔兔…

中电金信:源启数据资产平台的智能化与安全化的创新之道

中国企业在数智化转型中在数据治理领域遭遇多重挑战,包括在数据标准化、数据质量提升、数据分级分类,以及数据安全治理等。近几年,中电金信依托自主研发的智能数据底座“源启数据资产平台”,助力企业实现数据驱动的业务经营和精益管理。该平台不断吸纳全球数据治理领域的前…

【WEB漏洞】并发漏洞+经典案例

一、简单介绍1.1 并发漏洞概述1.2 并发漏洞常出现的功能点及解决方法1.2.1 用户注册/账户管理1.2.2 秒杀/抢购功能1.2.3 支付与结算1.2.4 文件读写1.2.5 日志记录1.2.6 缓存更新1.2.7 任务调度1.2.8 数据库操作1.2.9 队列消费1.2.10 多线程计算1.2.11 微服务间的并发请求1.2.12…

AI之旅:Microsoft.Extensions.AI 送惊喜,Cnblogs.DashScope.AI 表支持

https://www.cnblogs.com/cmt/p/185775742024年10月8日,微软 .NET 官方博客发布了一篇博文 Introducing Microsoft.Extensions.AI Preview – Unified AI Building Blocks for .NET,给 .NET 开发者带来了一个小惊喜,.NET 类库将增加一个统一的调用 AI 服务的抽象接口层。Mic…

word 图标变为文本图标 修复不起作用

参考 https://blog.csdn.net/qq_42925869/article/details/141466944,在HKEY_CURRENT_USER\Software\Classes\Applications目录下发现没有WORD的程序,因此参考其他程序结构,手动新建。 新建完成后再次应用office tool plus修复,修复完成后图标恢复。

CH585_IAP升级步骤

1、打开名为:McuProgramIAPTool.exe的工具,工具界面如图: 注:仅下载界面有效2、给接收器升级时,不需要保证2.4G处于连接状态,只要接收器插在PC上即可完成升级 3、选择接口:mi_034、点击搜索按钮,如果插入了2.4G接收器,会枚举到对应设备,返回已连接信息5、选择要升级的…

YASKAWA安川DX100控制柜维修看这几步

维修YASKAWA安川DX100控制柜需要综合运用多种诊断技巧,并遵循严格的安全操作规程。通过预防性维护和及时的故障处理,可以显著提高DX100控制柜的可靠性和使用寿命,从而保障企业生产线的稳定运行。同时,建议联系子锐机器人维修定期对YASKAWA安川机器人维修和保养。一、YASKAW…

待办事项太多?这些App让你轻松搞定!

在日常工作和生活中,许多人都有过忘记重要事项或任务堆积的困扰。为了提高工作效率和生活质量,越来越多的人开始寻求一种高效的方式来管理自己的任务和待办事项。幸运的是,随着技术的进步,各类待办事项App应运而生,它们不仅能够帮助我们合理安排时间,还能通过各种智能化功…