Bp网络(回归)Numpy

【机器学习】回归预测+BP回归 线性和多项式回归 在这一简单的模型中,单变量线性回归的任务是建立起单个输入的独立变量与因变量之间的线性关系;而多变量回归则意味着要建立多个独立输入变量与输出变量之间的关系。除此之外,非线性的多项式回归则将输入变量进行一系列非线性组合以建立与输出之间的关系,但这需要拥有输入输出之间关系的一定知识。训练回归算法模型一般使用随机梯度下降法(SGD)。 优点: 建模迅速,对于小数据量、简单的关系很有效; 线性回归模型十分容易理解,有利于决策分析。 缺点: 对于非线性数据或者数据特征间具有相关性多项式回归难以建模; 阅读详情
import numpy as np
import matplotlib.pyplot as plt

INPUT_SIZE = 2
HIDDEN_SIZE = 4
OUTPUT_SIZE = 2
LEARNING_RATE = 0.000001

def get_weights(last, next):
    return np.random.rand(last, next)


def get_bias(size):
    return np.random.rand(size)


def sigmoid(input):
    return 1 / (1 + np.exp(-input))


def rule(input):
    return np.maximum(input, 0)
def rule_d(input):
    x = np.array(input)
    for i in range(input.size):
        if input[i] > 0:
            x[i]=1
        else:
            x[i] = 0
    return x

def get_derivatives_of_sigmoid(input):
    return input * (1 - input)


def loss_MSE(pre, real):
    out = np.power(pre - real, 2)
    MSE = np.array([0], dtype=np.float32)
    for i in out:
        MSE[0] = MSE[0] + i
    MSE[0] = MSE / pre.size
    return MSE, pre - real


# 参数生成
w1 = get_weights(INPUT_SIZE, HIDDEN_SIZE)
b1 = get_bias(HIDDEN_SIZE)

w2 = get_weights(HIDDEN_SIZE, OUTPUT_SIZE)
b2 = get_bias(OUTPUT_SIZE)

# train
loss_numpy = np.array([],dtype=np.float32)
for epoch in range(212):
    # 一次Forward:
    input = np.array([epoch + 1, epoch + 1])
    hidden_a = np.dot(input, w1) + b1

    #hidden_h = hidden_a
    # hidden_h = sigmoid(hidden_a)
    hidden_h = rule(hidden_a)

    output_a = np.dot(hidden_h, w2) + b2
    output_h = output_a
    # output_h = sigmoid(output_a)
    target = np.array([epoch + 2, epoch + 2])

    # 一次Backward:
    loss, derivatives = loss_MSE(output_h, target)
    derivatives_output = derivatives  # * get_derivatives_of_sigmoid(output_h)
    derivatives_hidden = (np.dot(derivatives_output, w2.transpose())*rule_d(hidden_h)).transpose()
    # * hidden_h * (1 - hidden_h)
    gradient_w1 = np.zeros(w1.shape, dtype=np.float32)
    gradient_w2 = np.zeros(w2.shape, dtype=np.float32)
    x, y = w1.shape
    for i in range(x):
        for j in range(y):
            gradient_w1[i][j] = input[i] * derivatives_hidden[j]
    w1 = w1 - gradient_w1 * LEARNING_RATE
    x, y = w2.shape
    for i in range(x):
        for j in range(y):
            gradient_w2[i][j] = hidden_h[i] * derivatives_output[j]
    w2 = w2 - gradient_w2 * LEARNING_RATE
    loss_numpy = np.insert(loss_numpy, loss_numpy.size, loss)
    print(epoch, ":", loss, "out", output_h)

plt.plot(loss_numpy, 'r-', )
plt.title('loss function(train)', fontsize='large')
plt.xlabel('step (100)')
plt.ylabel('loss')
plt.show()

loss_numpy = np.array([],dtype=np.float32)
# text data
for epoch in range(300):
    # 一次Forward:
    input = np.array([epoch + 1, epoch + 1])
    target = np.array([epoch+2,epoch+2])
    hidden_a = np.dot(input, w1) + b1

    hidden_h = hidden_a
    # hidden_h = sigmoid(hidden_a)

    output_a = np.dot(hidden_h, w2) + b2
    output_h = output_a
    loss, derivatives = loss_MSE(output_h, target)
    print(epoch, ": input:", input, "out", output_h)
    print(loss)
    loss_numpy = np.insert(loss_numpy, loss_numpy.size, loss)
plt.plot(loss_numpy, 'r-', )
plt.title('loss function(text)', fontsize='large')
plt.xlabel('step (100)')
plt.ylabel('loss')
plt.show()

训练集中的MSE(均方误差)

测试集的MSE(均方误差) (注意分度值,应该发生了overfiting QaQ)

 

纯NumPy实现的BP神经网络回归工具:多特征输入,单数值预测,附带可运行示例数据 一个轻量级、无需深度学习框架的BP神经网络回归实现,完全基于NumPy编写,支持多个输入特征(如X1、X2等)映射到单一连续目标值(Y)。核心脚本pred.py封装了网络初始化、前向传播、误差反向传播、权重更新和预测全流程,使用Sigmoid激活函数与标准梯度下降优化,参数如隐层节点数、学习率、训练轮数均可手动调节。配套Excel数据文件(123.xlsx等)已按规范整理:每行一条样本,前列为特征列,末列为标签Y,开箱即用。整个实现不依赖TensorFlow或PyTorch,仅需Python和NumPy环境 阅读详情

相关推荐

纯NumPy手写BP神经网络代码包:支持多特征输入与多目标输出的回归预测,含示例Excel数据

一套无需深度学习框架的BP神经网络回归实现,全部用NumPy从零编写,包含前向传播、反向传播、权重更新和损失计算等完整逻辑。提供两个配套Excel文件:x.xlsx存放多个输入变量(如温度、湿度、压力等列),y.xlsx存放对应多个输出变量(如能耗、产量、偏差等列),两表行列严格一一对应,可直接加载训练。代码内置Z-score标准化处理、MSE损失监控、迭代过程打印及简单预测结果评估,用户只需修改文件路径、设置input_dim和output_dim参数、调整epochs数量即可运行。不依赖TensorFl

kafka6courier的博客 236

用numpy构造的一个简单BP

# -*- coding: utf-8 -*- """ Created on Thu Oct 4 08:28:15 2018 @author: 37989 """ import numpy as np import pandas as pd from matplotlib import pyplot # 标准化 def Standard(X): X_mean = X.mean(...

qq_28969139的博客 421

numpy手写BP神经网络——分类问题

使用numpy手写BP神经网络解决分类问题

x_8efengfan的博客 2234

input的两个参数

input标签的输入框可以用size限制输入的字符,size="1"表示只显示2个输入的字符用maxlenth限制输入的位数,maxlenth=“3”表示最多可以输入3个字符在input标签中增加readnoly=“readnoly”表示value的值不允许被修改。

step_by_setp的专栏 1241

基于Python的BP反向传播算法实现与实战详解

NumPy 提供丰富的内置函数(ufunc),天然支持广播与向量化操作。合理使用这些工具可以显著加速前向与反向传播。例如,同时实现多种激活函数的工厂模式:使用方式如下:这种方式便于模块化调用,减少重复代码。此外,可通过@njit装饰器(来自 Numba)进一步加速:@njit在大型数组上运行时,JIT 编译可带来数倍提速。

weixin_42524864的博客 896

Python纯手写三层BP网络代码包:带Iris分类和豆瓣评分回归双案例

一套开箱即用的Python三层BP神经网络实现,不依赖TensorFlow或PyTorch,所有计算逻辑(前向传播、反向传播、梯度下降)全部手动编码。包含两个完整任务示例:用Iris数据集做三分类预测,用豆瓣电影评分数据做数值回归预测。核心模块分工明确——BPNN.py定义网络结构与训练流程,GradientDescent.py封装批量/随机梯度下降策略,IrisLoader.py和DoubanRateLoader.py分别完成数据读取与标准化,test_classification.py和test_reg

root9的博客 251

BP(Back Propagation)回归算法

例如,对于一个简单的具有一个隐藏层的神经网络,输入层有n个神经元,隐藏层有m个神经元,输出层有p个神经元。输入向量x=(x1,x2,…,xn),隐藏层神经元的输入为zh=WihX十bh,其中Wih是输入层到隐藏层的权重矩阵,b是隐藏层的偏置向量,然后经过激活函数f(·)得到隐藏层的输出yh=fh(zh)。输出层神经元的输入为zo=Whoyh十bo,其中Who是隐藏层到输出层的权重矩阵,bo是输出层的偏置向量,最后经过激活函数f(·)得到输出层的输出yo=fo(zo),这就是网络对输入x的预测值。

2301_80050457的博客 1382

CentOS 7 常用命令大全

CentOS中Linux命令

m0_63075763的博客 2019

Python基于PyTorch实现BP神经网络ANN回归模型项目实战

Python基于PyTorch实现BP神经网络ANN回归模型项目实战

张陈亚的博客 5351

Claude Code 完整使用教程(2026最新版)

《Claude Code 完整使用教程(2026最新版)》摘要: Claude Code 是 Anthropic 公司推出的智能编程工具,通过自然语言对话实现代码编写、调试和重构。本教程基于 v2.1.101 版本,涵盖安装配置、核心功能及最新特性。主要内容包括: 多平台安装方式(macOS/Linux/Windows) 桌面应用专属功能如并行会话、定时任务和语音模式 模型选择指南(Sonnet/Opus/Haiku) 快速入门示例:5分钟创建Node.js项目 核心功能:代码读写、命令执行、Git集成等

程序猿_三产 2万+

DM9000有线网卡驱动编写

DM9000有线网卡驱动编写 1.DM9000简介   DM9000 是一款完全集成的、性价比高、引脚数少、带有通用处理器接口的单芯片快速以太网控制器。 自 带一个 10/100M PHY 和 4K 双字的 SRAM ,DM9000A 为适应各种处理器提供了 8 位、16 位数据接口访问 内部存储器,DM9000 拥有自动协商功能,DM9000 特性如下:   1.集成自适应 10/100M 收发器。   2.内置 16k 字节的 SRAM。   3.支持硬件帧校验。   4.兼容 3.3V 和 5.0V

weixin_44453694的博客 4673

Python使用numpy实现BP神经网络

本文完全利用numpy实现一个简单的BP神经网络,由于是做regression而不是classification,因此在这里输出层选取的激励函数就是f(x)=x。BP神经网络的具体原理此处不再介绍。 import numpy as np class NeuralNetwork(object): def __init__(self, input_nodes, hidden_nod

哇哇小仔的博客 8821

从零开始:如何用PSINS工具箱构建你的第一个IMU误差模型

本文详细介绍了如何使用严恭敏教授开发的PSINS工具箱构建IMU误差模型,涵盖从基础参数设置到高级误差建模的全过程。通过imuerrset函数配置陀螺零偏、随机游走等核心参数,并结合实战案例展示消费级MEMS器件的误差建模方法,帮助用户提升惯性导航系统的精度与可靠性。

weixin_29284885的博客 323

Python实现BP神经网络回归预测模型:快速上手与深度学习入门

Python实现BP神经网络回归预测模型:快速上手与深度学习入门 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在机器学习和数据科学领域,BP(Back Propagation)神经网络是一种经典且强大的算法,广泛应用于回归预测任务中。本项目提供了一个完整的Python实现BP神经网络回归预测模型的示例代码,旨在帮助开发者快速上手并理解BP神经网络的工作原理。 项目技...

gitblog_09817的博客 893

PCL 计算点云法向量并显示【2026最新版】

PCL计算法向量并显示,用OMP进行计算加速以及法线定向的深层次理解、操作。博客长期更新,本文最近更新时间为:2026年1月28日。

点云侠的博客 32万+

RK3568 低功耗设计全解析:DVFS 策略与 PMIC 电源管理

本文深入解析RK3568处理器的低功耗优化方案。从硬件架构分析入手,阐述四核Cortex-A55的功耗特性及分层电源域设计。重点介绍DVFS动态调压调频技术,包括Linux内核配置方法及场景化策略设计。详细讲解RK809 PMIC的电源管理优化,提供外设电源域控制与休眠唤醒配置的实战案例。通过智能终端应用实例,展示待机功耗从280mA降至65mA的优化效果,并推荐功率测试工具。文章强调需要平衡性能与功耗,结合场景定制策略,并指出AI负载预测等未来优化方向,为RK3568开发者提供系统性的低功耗解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2074

BP神经网络原理推导和实现

(Backpropagation Neural Network,误差反向传播神经网络)是一种经典的,广泛应用于分类、回归等任务。它的核心是通过动态调整网络参数(权重和偏置),使网络输出逐渐逼近真实值。

Yuansheng She's blog 1270

2020计算机专业保研夏令营面经:中科院计算所网数机试题目

计算所网络数据科学与技术重点实验室的第一阶段是机试。机试不限程序语言,要求提交源代码。

乔卿的博客 2957

用GA和PSO优化BP神经网络实现回归预测

利用遗传算法GA和粒子群算法PSO优化算法,将BP神经网络训练集的MSE作为适应度函数,获取最优的权值和阈值在反向输入到BP神经网络里构建回归预测模型,同时能够打印出模型的多个评价指标,具体效果可以看图在机器学习领域,BP神经网络是一种常用的模型,但它初始权值和阈值的随机设定,常常导致模型陷入局部最优,影响预测精度。遗传算法(GA)和粒子群算法(PSO)作为优秀的优化算法,可以用来解决这个问题。今天就来聊聊如何用GA和PSO优化BP神经网络,构建回归预测模型,并打印出多个评价指标。

2509_94268504的博客 1447

CODESYS数据处理合集(高低字节/ 字/浮点数/位)

VAR_INPUT//字节0//字节1END_VARVAREND_VAR。

RXXW_Dor的博客 358

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

别再死记公式了!用Python+NumPy手搓一个BP神经网络来拟合sin(x)曲线

本文详细介绍了如何使用Python和NumPy从零构建BP神经网络来拟合sin(x)曲线,避免死记公式。通过手动实现前向传播、反向传播和参数更新,深入理解神经网络的核心机制,适合机器学习初学者提升实践能力。

weixin_30856725的博客 376

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

从零手搓BP神经网络:NumPy实现2层前馈网络与反向传播详解

神经网络是机器学习中用于解决复杂非线性问题的核心模型,其核心原理在于通过多层非线性变换来拟合数据中的复杂模式。理解其运作机制的关键在于掌握前向传播与反向传播算法。前向传播负责数据的加权求和与激活,实现从输入到输出的预测;反向传播则基于链式法则,将预测误差从输出层逐层回传,计算各层参数的梯度,并通过梯度下降法迭代更新权重与偏置,从而让网络不断学习优化。这一过程深刻体现了梯度下降和链式法则在优化中的核心价值。掌握这些基础原理,对于在数学建模、预测分析等应用场景中灵活构建、调试及解释模型至关重要。本文以2层前馈网

weixin_30247781的博客 346

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

tensorflow学习--线性回归

最近在学习tensorflow,用优快云记录一下学习的过程 本次代码实现简单的线性回归,数据拟合,代码比较简单没有用到bp算法,只是熟悉一下tensorflow网络的搭建 #线性回归的案例 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt #使用numpy生成200个随机点 x_data ...

qq_41447003的博客 202

从零实现BP神经网络:原理详解与Python实战

在机器学习领域,神经网络作为模拟人脑神经元连接的计算模型,其核心在于通过前向传播与反向传播机制自动学习数据中的复杂模式。前向传播负责将输入数据逐层加权求和并激活,形成预测输出;反向传播则利用链式求导法则,将预测误差从输出层反向传递至各层,计算梯度并指导权重更新,这一过程是模型实现自我优化的关键。其技术价值在于能够拟合高度非线性的复杂关系,突破了传统线性模型的局限,广泛应用于房价预测、股票分析、工业参数优化等回归与分类场景。本文聚焦于BP神经网络,通过Python从零实现,深入剖析其误差反向传播原理,并结合梯

weixin_29051149的博客 217
上一篇: 反向传播算法笔记:BackpropgationAlgorithm
下一篇: SpringBoot乱码
SpringQAQ
博客等级 码龄8年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值