【BP神经网络】实战

1.参考Python实战:BP神经网络_bp神经网络实战python-CSDN博客

2.实践

(1)运行环境

anocanda Powershell Prompt(anocanda3)

(2)创建虚拟环境,解决安装包的版本问题

*打开终端(Terminal)或命令提示符(Command Prompt):

    在Windows上,可以通过搜索“cmd”来打开命令提示符。

*创建新的虚拟环境:
使用conda命令来创建虚拟环境。下面是一个基本的例子,其中myenv是你的环境名称,而python=3.8指定了你希望在这个环境中使用的Python版本。

conda create --name myenv python=3.8

*激活虚拟环境:
创建完成后,你需要通过以下命令激活这个环境:

    对于Windows用户:

conda activate myenv

*安装所需要的包

(3)运行代码:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号 '-' 显示为方块的问题
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.model_selection import train_test_split# 定义学生成绩数据集,这里为方便演示,手动创建示例数据
data = np.array([[80, 75],[85, 80],[70, 65],[90, 88],[75, 70],[88, 82],[65, 60],[92, 90]
])
final_scores = np.array([82, 88, 72, 92, 76, 86, 68, 95])# 划分训练集和测试集,按照8:2的比例划分,设置随机种子以保证每次划分结果可重复
X_train, X_test, y_train, y_test = train_test_split(data, final_scores, test_size=0.2, random_state=42)# 构建BP神经网络模型
model = Sequential()
# 输入层,有2个神经元,对应2个输入特征(作业成绩和小测验成绩),激活函数为ReLU
model.add(Dense(16, input_dim=2, activation='relu'))
# 隐藏层,16个神经元,激活函数为ReLU
model.add(Dense(16, activation='relu'))
# 输出层,1个神经元,对应期末考试成绩,激活函数为线性(因为是回归任务)
model.add(Dense(1, activation='linear'))# 编译模型,指定优化器、损失函数和评估指标
model.compile(optimizer='adam',loss='mean_squared_error',metrics=['mae'])  # 平均绝对误差(MAE)作为评估指标# 训练模型,指定训练轮数、批量大小等参数
epochs = 100
batch_size = 2
history = model.fit(X_train, y_train, epochs=epochs, batch_size=batch_size,validation_data=(X_test, y_test), verbose=0)# 获取训练过程中的损失和验证损失历史数据
loss_history = history.history['loss']
val_loss_history = history.history['val_loss']# 可视化训练损失和验证损失曲线
plt.figure(figsize=(10, 6))
plt.plot(range(1, epochs + 1), loss_history, label='训练损失')
plt.plot(range(1, epochs + 1), val_loss_history, label='验证损失')
plt.xlabel('轮数')
plt.ylabel('损失值')
plt.title('BP神经网络训练损失曲线')
plt.legend()
plt.show()# 使用训练好的模型对测试集进行预测
y_pred = model.predict(X_test).flatten()  # 将二维数组展平为一维数组# 可视化预测结果与实际结果(简单示例,以测试集为例)
plt.figure(figsize=(10, 6))
plt.scatter(range(len(y_test)), y_test, label='实际成绩', color='blue')
plt.scatter(range(len(y_pred)), y_pred, label='预测成绩', color='red')
plt.xlabel('样本索引')
plt.ylabel('期末考试成绩')
plt.title('BP神经网络预测学生成绩结果')
plt.legend()
plt.show()# 调试信息
print("y_test shape:", y_test.shape)
print("y_pred shape:", y_pred.shape)
print("y_test type:", type(y_test))
print("y_pred type:", type(y_pred))

(4)结果截图:

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

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

相关文章

深度学习多模态人脸情绪识别:从理论到实践

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 1. 引言2. 技术框架与流程图3. 核心算法解析3.1 视觉特征提取(CNN)3.2…

ssh通过22端口无法连接服务器问题处理

一,安全组开放22端口 root无法连接服务器,22端口也开放了,可能是防火墙开启了拦截。 二,检测防火墙状态 查看防火墙状态 sudo firewall-cmd --state 关闭防火墙 sudo systemctl stop firewalld 开启防火墙 sudo systemctl sta…

element 的tab怎么动态根据参数值添加一个vue页面

在使用 Element UI 的 Tabs 组件时,动态添加 Vue 组件或页面可以通过操作 tabs 数组来实现。假设你要根据参数值来动态添加一个 Vue 页面(这里假设是一个 Vue 组件),你可以按照以下步骤操作: 首先,确保你已…

Docker封装镜像、分发、部署实践:nginx

在实际生产工作中,通常是没法直接访问公网的,但是有经常需要使用Docker部署应用,本文将介绍使用Docker从拉取nginx、打包、分发到加载部署nginx的全流程! 1 准备工作 1.1 安装docker 请参考:Docker入门指南&#xff…

LuaJIT 学习(5)—— string.buffer 库

文章目录 Using the String Buffer LibraryBuffer ObjectsBuffer Method Overview Buffer Creation and Managementlocal buf buffer.new([size [,options]]) local buf buffer.new([options])buf buf:reset()buf buf:free() Buffer Writersbuf buf:put([str|num|obj] [,……

vue3:request.js中请求方法,api封装请求,方法请求

方法一 request.js // 封装GET请求 export const get (url, params {}) > {return request.get(url, { params }); }; // 封装POST请求 export const post (url, data {}) > {return request.post(url, data); }; api封装 import { post } from /utils/request; …

Ollama+OpenWebUI本地部署大模型

OllamaOpenWebUI本地部署大模型 前言Ollama使用Ollama安装Ollama修改配置Ollama 拉取远程大模型Ollama 构建本地大模型Ollama 运行本地模型:命令行交互Api调用Web 端调用 总结 前言 Ollama是一个开源项目,用于在本地计算机上运行大型语言模型&#xff0…

【机器学习】基于t-SNE的MNIST数据集可视化探索

一、前言 在机器学习和数据科学领域,高维数据的可视化是一个极具挑战但又至关重要的问题。高维数据难以直观地理解和分析,而有效的可视化方法能够帮助我们发现数据中的潜在结构、模式和关系。本文以经典的MNIST手写数字数据集为例,探讨如何利…

【redis】发布订阅

Redis的发布订阅(Pub/Sub)是一种基于消息多播的通信机制,它允许消息的**发布者(Publisher)向特定频道发送消息,而订阅者(Subscriber)**通过订阅频道或模式来接收消息。 其核心特点如…

C语言零基础入门:嵌入式系统开发之旅

C语言零基础入门:嵌入式系统开发之旅 一、引言 嵌入式系统开发是当今科技领域中一个极具魅力和挑战性的方向。从智能家居设备到汽车电子系统,从智能穿戴设备到工业自动化控制,嵌入式系统无处不在。而C语言,作为嵌入式开发中最常…

K8S学习之基础二十三:k8s的持久化存储之nfs

K8S持久化存储之nfs ​ 在 Kubernetes (k8s) 中使用 NFS(Network File System)作为存储解决方案是一种常见的方式,特别是在需要共享存储的场景中。以下是关于如何在 Kubernetes 中使用 NFS 存储的详细说明: 1. 准备 NFS 服务器 …

【Rust】枚举和模式匹配——Rust语言基础14

文章目录 1. 枚举类型1.2. Option 枚举 2. match 控制流结构2.1. match 对绑定值的匹配2.2. Option<T> 的匹配2.3. 通配模式以及 _ 占位符 3. if let 控制流4. 小测试 1. 枚举类型 枚举&#xff08;enumerations&#xff09;&#xff0c;也被称作 enums。枚举允许你通过…

【商城实战(25)】解锁UniApp移动端适配秘籍,打造完美商城体验

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…

《C++ Primer》学习笔记(二)

第二部分&#xff1a;C标准库 1.为了支持不同种类的IO处理操作&#xff0c;标准库定义了以下类型的IO&#xff0c;分别定义在三个独立的文件中&#xff1a;iostream文件中定义了用于读写流的基本类型&#xff1b;fstream文件中定义了读写命名文件的类型&#xff1b;sstream文件…

MATLAB风光柴储微网粒子群算法

本程序实现了风光柴储微网中的粒子群优化&#xff08;PSO&#xff09;算法&#xff0c;用于优化微网的能源调度问题。具体来说&#xff0c;程序考虑了光伏发电、风力发电、柴油机发电&#xff08;柴储&#xff09;&#xff0c;并使用粒子群算法来优化这些能源的调度&#xff0c…

解决Windows版Redis无法远程连接的问题

&#x1f31f; 解决Windows版Redis无法远程连接的问题 在Windows系统下使用Redis时&#xff0c;很多用户会遇到无法远程连接的问题。尤其是在配置了Redis并尝试通过工具如RedisDesktopManager连接时&#xff0c;可能会报错“Cannot connect to ‘redisconnection’”。今天&am…

解决 HTTP 请求中的编码问题:从乱码到正确传输

文章目录 解决 HTTP 请求中的编码问题&#xff1a;从乱码到正确传输1. **问题背景**2. **乱码问题的原因**2.1 **客户端编码问题**2.2 **请求头缺失**2.3 **服务器编码问题** 3. **解决方案**3.1 **明确指定请求体编码**3.2 **确保请求头正确**3.3 **动态获取响应编码** 4. **调…

VS Code 配置优化指南

目录 一、安装与基础设置1. 安装 VS Code2. 中文语言包 二、插件推荐三、常见配置项与优化1. 用户 / 工作区设置2. 全局配置 / Settings Sync3. 常用设置示例 四、性能优化五、调试与终端配置1. 调试配置2. 内置终端配置 六、快捷键配置七、美观与主题八、总结 VS Code&#xf…

基于NXP+FPGA永磁同步电机牵引控制单元(单板结构/机箱结构)

永磁同步电机牵引控制单元&#xff08;单板结构/机箱结构&#xff09; 永磁同步电机牵引控制单元&#xff08;TCU-PMSM&#xff09;用于牵引逆变器-永磁同步电机构成的牵引电传动系统&#xff0c;采用轴控方式。执行高性能永磁同步电机复矢量控制策略&#xff0c;具有响应迅速…

/etc/sysconfig/jenkins 没有这个文件

在 CentOS 或其他基于 Red Hat 的 Linux 系统中&#xff0c;/etc/sysconfig/jenkins 文件通常用来存储 Jenkins 的配置参数&#xff0c;例如 JENKINS_HOME 的路径。但是&#xff0c;如果你发现没有这个文件&#xff0c;你可以通过以下几种方式来解决或确认&#xff1a; 检查 J…