首页 > 编程语言 >12.9实验五:BP 神经网络算法实现与测试

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

时间:2024-12-12 14:33:08浏览次数:7  
标签:iris train 神经网络 score BP 测试 12.9

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

 

一、实验目的

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

 

二、实验内容

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

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

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

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

 

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

   1. 算法伪代码

开始

 

加载 iris 数据集

将特征存储在 X 中

将标签存储在 y 中

 

使用留出法将数据集分为训练集和测试集

测试集占 1/3

确保训练集和测试集的类别比例相同

 

创建 MLPClassifier 实例

设置隐藏层大小为 10

设置最大迭代次数为 1000

 

使用训练集数据训练 BP 神经网络模型

 

定义评分指标(准确度、精度、召回率、F1 值)

进行五折交叉验证

计算并输出交叉验证的平均准确度

 

使用测试集进行预测

将预测结果存储在 y_pred 中

 

生成并输出分类报告(包括精度、召回率和 F1 值)

 

结束

   2. 算法主要代码

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

'''

Created on 2024年12月12日

 

@author: 席酒

'''

# 导入必要的库

from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split, cross_val_score

from sklearn.neural_network import MLPClassifier

from sklearn.metrics import make_scorer, precision_score, recall_score, f1_score, classification_report

 

# 加载 iris 数据集

iris = load_iris()

X = iris.data # 特征

y = iris.target # 标签

 

# 使用留出法将数据集分为训练集和测试集,测试集占 1/3

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=42, stratify=y)

 

# 创建 BP 神经网络分类器

mlp = MLPClassifier(hidden_layer_sizes=(10,), max_iter=1000, random_state=42)

 

# 训练模型

mlp.fit(X_train, y_train)

 

# 定义评分指标

scoring = {

'accuracy': 'accuracy',

'precision': make_scorer(precision_score, average='weighted'),

'recall': make_scorer(recall_score, average='weighted'),

'f1': make_scorer(f1_score, average='weighted')

}

 

# 进行五折交叉验证

scores = cross_val_score(mlp, X_train, y_train, cv=5, scoring='accuracy')

 

# 输出交叉验证准确度

print("交叉验证准确度:", scores.mean())

 

# 使用测试集进行预测

y_pred = mlp.predict(X_test)

 

# 输出分类报告

print(classification_report(y_test, y_pred))

 

 

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

 

 

 

四、实验结果分析

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

F1)

 

 

2. 对比分析

模型在 iris 数据集上的表现非常优秀,所有指标均为 1.00,表明模型能够完美地分类所有样本。iris 数据集相对较小且类别分布均匀,这可能是模型表现良好的原因之一。BP 神经网络在此任务中表现出色,但在更复杂或不平衡的数据集上,可能需要考虑其他模型或调整超参数。

标签:iris,train,神经网络,score,BP,测试,12.9
From: https://www.cnblogs.com/yindantong/p/18602392

相关文章

  • 第二章 2.3.1 定义数据集训练神经网络
    定义数据集训练神经网络#https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch#https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch###################ChapterTwo########################################数据集的库from......
  • 24.12.9学习总结
    共三部分,即写对的,不确定的(未交的),写错的。一、写对的代码:题目描述大多数文本编辑器可以查找单词,快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。现在,wzx不会统计单词数,请你帮助他,具体要求:给定一个单词,请你输出它在给定的文章中出现的次数和第一......
  • JavaScript 的模块化:AMD、ES Module 和 Webpack
    一、AMD(AsynchronousModuleDefinition)什么是AMD?AMD是一种为浏览器环境设计的模块定义规范。它通过异步加载模块,解决了早期前端开发中JavaScript文件依赖关系复杂的问题。require.jshttps://requirejs.org/docs/api.html#jsfiles语法示例define(['dependency1','......
  • 卷积神经网络
    整体架构输入层、卷积层、池化层、全连接层卷积做了一件什么事?我们有一张64*64的图像数据,首先是全连接神经网络(如下图所示),输入数据的特征是1×4096的特征向量,每增加一个中间层的神经元,就会增加(4096+1)个参数,神经元的个数增加到10个,则参数个数会增加到525706。针对全连接神经......
  • 神经网络入门之三 C环境部署
    此篇文章在2022年12月5日被记录入门神经网络三C环境部署为什么要部署到C环境上面两篇文章中,我们详细讲解了采集样本与样本训练,生成了一个模型文件,经过测试我们的模型成功率在90%以上,但是我们想将这个模型利用起来,实时检测我们的运动姿态,在ESP32上运行torch显然是不现实......
  • 神经网络入门之二 网络搭建
    此篇文章在2022年12月1日被记录入门神经网络二网络搭建使用哪种深度学习框架目前主流的神经网络框架有tensorflow、kears,国产的有百度的PaddlePaddle,但是我是从yolov5入坑的,yolov5官方代码使用的是pytorch框架,所以我使用torch,而且torch框架上手很简单,资源较多坑较少。......
  • 神经网络入门之一 搭建网络结构与数据采集
    此篇文章在2022年11月30日被记录转移这篇文章时,突然想到了为了采集样本在公司楼下跑步了20分钟入门神经网络一样本采集在本科的时候对神经网络颇有兴趣,感觉很神秘,特别是当时的yolov5目标检测算法,让我感觉特别震撼,计算机在图像识别上已经超过了人眼。但是这么长时间以来一直......
  • 发明图神经网络模块的人真是个天才!
    今天给大家推荐一个涨点发顶会的好方向:图神经网络(GNN)。这俩热点的结合可以轻松实现“1+1>2”的效果。图神经网络(GraphNeuralNetwork,简称GNN)是一种基于图结构的深度学习模型,专门用于处理图数据。它通过在图中的节点和边上制定一定的策略,将图结构数据转化为规范而标准的表示,......
  • 循环神经网络(RNN)原理及实现
    一、引言在深度学习领域,循环神经网络(RecurrentNeuralNetwork,RNN)是一类具有独特结构和强大功能的神经网络模型。与传统的前馈神经网络不同,RNN能够处理序列数据,如时间序列数据、文本数据等,这使得它在自然语言处理、语音识别、时间序列预测等众多领域都取得了广泛的应用和显著......
  • 初学者:神经网络(2)
          上一篇文章中我们说神经网络的基本结构,神经网络训练的基本原理,这篇文章我们先来说一说神经网络中一个特别重要的东西---激活函数。      还是引用上一篇文章的老图。      如果按照上图的结构来输出最终的结果,那么计算过程如下:hj=i=1nxicijy=j=......