一个月前为准备比赛写的,有需要可自取。代码可能还有诸多不足之处,如能指出感激不尽。关于代码的几点说明:
- 依旧是用matlab写的。
- 调用了newff函数生成网络。
- 隐含层神经元节点数的选取:先根据经验法则确定大致范围,然后在范围内选择使误差和最小的节点数(27-51行)。
- 为避免过拟合,调用了dropout layer函数丢弃部分节点,代码中设置的丢弃比例是0.25。
- 初始权值阈值是随机生成的,可以用其他智能算法进行优化。这里未优化,所以测试集的预测效果有一定随机性。
- 其实自己搭建网络也不算复杂,就是把误差反向传递的求导过程完整写出来。但如果只是拿来用一下的话就没必要了,自己搭建的差不多也就是这个模式。最关键的还是节点数和初始权值阈值的设置。
代码:
- clear
- clc
- %%导入数据
- load data_Octane.mat
- %%数据说明:X为自变量,Y为因变量,new_X为待预测样本的自变量
- %%将样本随机分为训练集和测试集
- %将50个数字随机排列
- rand=randperm(size(X,1));
- %划分出训练集,共35个样本
- X_train=X(rand(1:35),:)';