首页 > 其他分享 >12.4

12.4

时间:2024-12-04 10:54:23浏览次数:4  
标签:交叉 验证 准确率 score 测试 12.4 cv

实验五:BP 神经网络算法实现与测试

 

一、实验目的

深入理解 BP 神经网络的算法原理,能够使用 Python 语言实现 BP 神经网络的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。

 

 

二、实验内容

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

(2)使用训练集训练 BP 神经网络分类算法;

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

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

 

 

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

   1. 算法伪代码

1. 导入所需库。

2. 加载并标准化Iris数据集。

3. 划分训练集和测试集。

4. 初始化并训练MLP神经网络。

5. 进行交叉验证并输出结果。

6. 在测试集上评估模型并输出分类报告。

 

   2. 算法主要代码

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

# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import classification_report, make_scorer, accuracy_score, precision_score, recall_score, f1_score

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

# 标准化特征值
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 按照70%训练集,30%测试集的比例分割数据集,确保类别分布均匀(stratify)
X_train, X_test, y_train, y_test = train_test_split(
    X_scaled, y, test_size=0.33, random_state=42, stratify=y)

# 创建并训练BP神经网络模型,增加迭代次数并启用早停法
mlp = MLPClassifier(
    hidden_layer_sizes=(10,),
    max_iter=2000,  # 增加迭代次数
    random_state=42,
    early_stopping=True,  # 启用早停法
    validation_fraction=0.2,  # 设置验证集比例
    n_iter_no_change=50,  # 设置早停条件,连续50次迭代无改善则停止
    learning_rate_init=0.001  # 可选:调整初始学习率
)
mlp.fit(X_train, y_train)

# 定义评分函数
scoring = {
    '准确率': make_scorer(accuracy_score),
    '宏平均精度': make_scorer(precision_score, average='macro'),
    '宏平均召回率': make_scorer(recall_score, average='macro'),
    '宏平均F1分数': make_scorer(f1_score, average='macro')
}

# 使用五折交叉验证评估模型性能
cv_results = {}
for metric, scorer in scoring.items():
    cv_scores = cross_val_score(mlp, X_train, y_train, cv=5, scoring=scorer)
    cv_results[metric] = cv_scores
    print(f"交叉验证 {metric} 分数: {cv_scores}")
    print(f"平均交叉验证 {metric} 分数: {cv_scores.mean()}")

# 使用测试集评估模型性能
y_pred = mlp.predict(X_test)
report = classification_report(y_test, y_pred, target_names=iris.target_names)

# 打印分类报告
print("分类报告:\n", report)

# 打印五折交叉验证的平均得分
print("\n交叉验证总结:")
for metric, scores in cv_results.items():
    print(f"平均交叉验证 {metric} 分数: {scores.mean()}")

 

 

 

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

 

 

四、实验结果分析

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

 

 

2. 对比分析

训练结果 (基于五折交叉验证)

准确率:平均0.69

宏平均精度:平均0.693

宏平均召回率:平均0.694

宏平均F1分数:平均0.678

测试结果

准确率:0.82

宏平均精度:0.83

宏平均召回率:0.82

宏平均F1分数:0.82

对比分析

性能提升:

模型在测试集上的表现明显优于交叉验证的结果。例如,测试集上的准确率为0.82,而交叉验证的平均准确率为0.69。

泛化能力:

测试结果表明模型具有较好的泛化能力,能够在未见过的数据上取得不错的性能。这可能是由于数据集较小,导致交叉验证时某些折叠的数据分布不够理想。

过拟合/欠拟合:

尽管测试结果优于交叉验证结果,但考虑到交叉验证中某些折叠的表现非常差(如第一个折叠的准确率仅为0.1),可能存在一定的数据分割问题或模型对某些特定数据点过于敏感。然而,整体来看,模型并未显示出明显的过拟合迹象,因为测试集的表现依然良好。

分类报告细节:

在测试集中,setosa类别(准确率0.86,召回率0.75)和versicolor类别(准确率0.70,召回率0.82)的性能稍逊于virginica类别(准确率0.94,召回率0.88)。这表明模型对不同类别的预测能力存在差异,可能需要进一步调整以优化这些类别的识别。

标签:交叉,验证,准确率,score,测试,12.4,cv
From: https://www.cnblogs.com/0608lin/p/18585843

相关文章

  • 基于 Python 3.12.4 和 PySide 6 的 假用户操作系统【0-0】虚拟终端框架
    基本目标实现工作目录的切换;实现非退出命令下的无限循环;到目前为止还不能实现的功能动态导入py文件中的模块缺少组件定义虚拟进程类command.pyfromctypesimportwindllfromPySide6.QtWidgetsimportQWidgetfromsysimportexitassys_exitfromosimportpath......
  • VMware Tools 12.4.5 下载 - 客户机操作系统无缝交互必备组件
    VMwareTools12.4.5下载-客户机操作系统无缝交互必备组件VMware虚拟机必备组件(驱动和交互式服务)请访问原文链接:https://sysin.org/blog/vmware-tools-12/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwareTools是一套安装在虚拟机的操作系统中的实用程......
  • centos stream9(linux): 编译安装python 3.12.4
    一,官方下载地址:https://www.python.org/downloads/点击进入具体版本的下载页面,我们选择稳定版本,地址:https://www.python.org/downloads/release/python-3124/如图:复制得到下载链接:https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz 二,下载:从命令行下载:......
  • Lightroom Classic 2023 for Mac(摄影后期图像编辑工具) v12.4版
    lightingClassic是Adobe公司推出的一款图像处理软件,是数字摄影后期制作的重要工具之一。与其他图像处理软件相比,LightroomClassic具有以下特点:LightroomClassic2023forMac(摄影后期图像编辑工具)软件地址高效的图像管理:LightroomClassic提供了强大的图像管理功能,可以......
  • Windows server 2019 英文版镜像和中文版镜像Debian12.4镜像
    Windowsserver2019英文镜像​​​​​​​​​https://sl-m-ssl.xunlei.com/h5/page/download-share/index.html?entry=link&appType=PC&videobtindex=-1&storid=czvvdfq66ast&share_from=leftlist_rk_shareWindowsserver2019英文镜像https://pan.xunlei.com/s/VNtDquO1......
  • Debian 12.4系统下的samba服务配置
    第一步安装samba服务apt install -y samba创建一个组,和一个用户,把用户添加到组里面sudouseradd-mtest1\\创建一个名为test1的用户sudouseradd-mtest2\\创建一个名为test2的用户sudogroupaddmanager1\\创建一个名为manager1的组sudogroupaddmanager2m......
  • 肖SIR__数据库之子查询__12.4
    一、什么是子查询?一个查询嵌套另一个查询例如:selectdept1fromdeptwheredept_name="iT技术";#dept中"iT技术"的编号103selectsidfromempwheredept2=103#103=前面的语句selectsidfromempwheredept2=(selectdept1fromdeptwheredept_name="iT技术") 二......
  • 当今最强最有诚意的安卓平板!Xiaomi Pad 6S Pro 12.4 评测:在线视频续航19小时
    一、前言:全方位升级的平板电脑2024年2月22日,小米正式推出了新一代平板XiaomiPad6SPro12.4。如果单从名字上看,它似乎是小米平板5Pro的升级版,但实际上,它是小米平板6Pro的下一代产品。XiaomiPad6SPro12.4搭载了高通骁龙8Gen2处理器,带来了35%的性能提升和40%的能效提升......
  • CSharp: QuestPDF 2023.12.4 in doenet 8.0
     /*ide:vs202217.5.net8.0QuestPDF23.12.4from:https://github.com/QuestPDF/QuestPDF/discussions/560*/namespaceConsoleAppFontPdfDemo{usingQuestPDF;usingQuestPDF.Fluent;usingQuestPDF.Infrastructure;usingQuest......
  • 大二打卡(12.4)
    今天做了什么:上午没有安排课程,我好好地享受了一个大懒觉。在柔软的被窝里,我沉醉在梦境中,让身心都得到了充分的休息。这样的时光真是难得,让我倍感珍惜。午饭后,我开始了下午的Java课程。老师开始发送往年的题目练习,让我们通过实践来巩固所学知识。我迫不及待地打开了电脑,开始编写......