十一、机器学习进阶知识:小波神经网络(WNN)的实现(Python,附源码及数据集)

十一、机器学习进阶知识:小波神经网络(WNN)的实现(Python,附源码及数据集)本文介绍了小波神经网络 WNN 的理论基础 包括网络结构 前向传播 反向传播过程以及建模步骤

大家好,欢迎来到IT知识分享网。

一、理论基础

1、小波神经网络结构

2、前向传播过程

3、反向传播过程

4、建模步骤

以使用小波神经网络进行预测为例,可以将小波神经网络预测模型的建模步骤总结如下:

  1. 根据输入数据的相关特征确定小波神经网络输入层、隐含层以及输出层的节点数;
  2. 选择一种参数初始化方法对小波神经网络隐含层的连接权值、平滑因子和伸缩因子、输出层的连接权值进行随机初始化;
  3. 数据由输入层输入小波神经网络,传递至隐含层后经小波变换对数据进行非线性转换;
  4. 数据在隐含层输出后传递至输出层,在与输出层的连接权值进行线性计算后由激活函数进行非线性转换,最后得到网络的前向传播输出;
  5. 选择一种损失函数对网络的前向传播输出以及目标值进行相关计算得到损失值;
  6. 以输出层的损失值计算得到输出层连接权值以及阈值的梯度,选择一种反向传播算法对它们进行调整;
  7. 损失值传递至隐含层,同样使用相同的反向传播算法对隐含层的中心点以及宽度向量进行调整;
  8. 获得一个参数得到更新后的小波神经网络;
  9. 在达到最大迭代次数或满足停止迭代条件之前,重复步骤4到步骤8,在达到最大迭代次数后,输出所有参数确定的小波神经网络。

二、小波神经网络的实现

1、训练过程(WNN.py)

#库的导入 import numpy as np import pandas as pd import math #激活函数 def tanh(x): return (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x)) #激活函数偏导数 def de_tanh(x): return (1-x2) #小波基函数 def wavelet(x): return (math.cos(1.75*x)) * (np.exp((x2)/(-2))) #小波基函数偏导数 def de_wavelet(x): y = (-1) * (1.75 * math.sin(1.75 * x) + x * math.cos(1.75 * x)) * (np.exp(( x 2)/(-2))) return y #参数设置 samnum = 72 #输入数据数量 hiddenunitnum = 8 #隐含层节点数 indim = 4 #输入层节点数 outdim = 1 #输出层节点数 maxepochs = 500 #迭代次数 errorfinal = 0.65*10(-3) #停止迭代训练条件 learnrate = 0.001 #学习率 #输入数据的导入 df = pd.read_csv("train.csv") df.columns = ["Co", "Cr", "Mg", "Pb", "Ti"] Co = df["Co"] Co = np.array(Co) Cr = df["Cr"] Cr = np.array(Cr) Mg=df["Mg"] Mg=np.array(Mg) Pb = df["Pb"] Pb =np.array(Pb) Ti = df["Ti"] Ti = np.array(Ti) samplein = np.mat([Co,Cr,Mg,Pb]) #数据归一化,将输入数据压缩至0到1之间,便于计算,后续通过反归一化恢复原始值 sampleinminmax = np.array([samplein.min(axis=1).T.tolist()[0],samplein.max(axis=1).T.tolist()[0]]).transpose()#对应最大值最小值 #待预测数据为Ti sampleout = np.mat(

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/135801.html

(0)
上一篇 2025-07-01 22:20
下一篇 2025-07-01 22:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信