预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

题目:基于RBF神经网络的水泥强度预测模型1.研究内容2.方法及步骤3过程及实现Loss(2)用Rosetta软件属性约简,得出的主要因素为表1-1 (3)八个主要因素(4)RBF网络建模: ①RBF网络结构和工作原理:(径向基函数网络的拓扑结构) 由图对应的公式为: 表示输出层第k个节点的输出。 表示输出层第k个节点的阈值 为径向基函数 表示第j个隐层节点连接到输出层第k个节点的权值 隐层函数一般采用高斯函数确定:对于高斯函数,其中x是n维输入向量;是第i个函数的 中心;是第i个感知的变量(可以自由选择的参数),它决定了该基函数围绕中心点的宽度由高斯函数可知只要确定隐节点的数据中心,高斯 函数的值就可以确定,而隐节点的数据中心确定后 隐节点的扩展常数就可以根据公式算出,最后各隐 节点的数据中心和扩展常数确定,输出权值就可以 通过训练得到。具体步骤如下: 1)算法初始化:选择h个不同的初始聚类中心,比如,从样本输 入中随机选取,或者选择前h个样本输入,但这h个初始数据中心必 须取不同值。 2)计算所有样本输入与聚类中心的距离3)对样本输入,按最小距离原则对其进行分类: 即当时,即 被当归为第i类,即。 4)重新计算各类的新的聚类中心: 5)如果转到步骤(2),否则聚类结束,转到步骤(6)。一旦各隐节点的数据中心和扩展常数确定了,输出权值就可以通过训练得到,最后就可以建立RBF网络了②建模: 本文用了两种建模方法: 1)数据中心从样本输入中选取(随机选取中心) 2)数据中心动态调节方法(k均值聚类方法)随机选取数据中心程序如下:%计算各隐节点的扩展常数(宽度) AllDistances=dist(Centers',Centers);%计算隐节点数据中心间的距离(矩阵) Maximum=max(max(AllDistances));%找出其中最大的一个距离 fori=1:ClusterNum%将对角线上的0替换为较大的值 AllDistances(i,i)=Maximum+1; end Spreads=Overlap*min(AllDistances)';%以隐节点间的最小距离作为扩展常数 %计算各隐节点的输出权值 Distance=dist(Centers',SamIn);%计算各样本输入离各数据中心的距离 SpreadsMat=repmat(Spreads,1,SamNum); HiddenUnitOut=radbas(Distance./SpreadsMat);%计算隐节点输出阵 HiddenUnitOutEx=[HiddenUnitOut'ones(SamNum,1)]';%考虑偏移 W2Ex=SamOut*pinv(HiddenUnitOutEx);%求广义输出权值 W2=W2Ex(:,1:ClusterNum);%输出权值 B2=W2Ex(:,ClusterNum+1);%偏移 %测试 TestDistance=dist(Centers',TestSamIn); TestSpreadsMat=repmat(Spreads,1,TestSamNum); TestHiddenUnitOut=radbas(TestDistance./TestSpreadsMat); TestNNOut=W2*TestHiddenUnitOut+B2; plot(1:TestSamNum,TestSamOut,'r-+',1:TestSamNum,TestNNOut,'b-o'); title('属性约简后的预测值与实际值模型'); xlabel('输出样本个数'); ylabel('预测样本值与实际样本值'); figure; f=abs(TestSamOut-TestNNOut)./TestSamOut; plot(f); title('属性约简后的样本预测值的相对误差百分数'); xlabel('输出样本个数'); ylabel('预测样本的相对误差'); W2 B2 average1=abs(sum((TestNNOut-(sum(TestSamOut)./59))./TestSamOut))./59%平均相对误差绝对值约简处理后建模所得模型图像基于k均值聚类方法的程序如下:%基于k均值的聚类方法确定%按最小距离原则对所有样本进行分类 fori=1:SamNum AllDistance=dist(Centers',SamIn(:,i)); [MinDist,Pos]=min(AllDistance); NumberInClusters(Pos)=NumberInClusters(Pos)+1; IndexInClusters(Pos,NumberInClusters(Pos))=i; end %保存旧的聚类