给大家安利一款朋友开发的自研国产数据分析基础工具,一键式自动分析,自动生成分析模板,5分钟掌握主流61个统计类数学模型(几乎涵盖SPSS绝大部分功能),以及23个有监督机器学习(包括随机森林,SVM,XGBoost等)
PS:巨方便简单上手,貌似现在是免费
官网:www.mpaidata.com mpai数据科学平台
在拥有一些数据的前提下,预测接下来的数据,在模型检验的时候用。
步骤:
1. 准备训练网络的样本。
2. 确定网络的初始参数,包括最大训练次数,隐含层神经元数量,网络学习速率,训练的目标误差,是否添加动量因子
3. 初始化网络的权值(w)和阈值(B)
4. 计算第一层神经元的输入和输出,对输入进行归一化处理
5. 计算第二层神经元的输入。对于第二层,神经元的输入 一定来自第一层所有神经元的值和阈值的和,即
6. 计算第二层神经元的输出。假设隐含层神经元激励函数为单机S形函数,即
所以第二层的输出
7. 计算第三层的输入输出:
8. 计算能量函数
9. 计算第二层与第三层之间权值和阈值调整量
10. 计算第一层与第二层之间权值和阈值的调整量
11. 计算调整之后的权值和阈值
把t时刻的各层权值和阈值加上各自的调整量赋予t+1时刻的权值和阈值:
12. 还原输出值。
案例如下:(此案例在《Matlab在数学建模比赛中的应用 》116页)
案例二
年份 | 2012 | 2013 | 2014 |
销售额 | 3517.72 | 4020.27 | 3997.2 |
% 产生训练样本与测试样本
input_train=[2012 2013 2014];
output_train=[3517.72 4020.27 3997.2];
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train); % 函数接口赋值
NodeNum = 49; % 隐层节点数
TypeNum = 1; % 输出维数
Epochs = 15000; % 训练次数
input_text=[2013 2014 2015];
% 设置网络参数
TF1 = 'radbas';
TF2 = 'purelin';
% TF1 = 'radbas';TF2 = 'purelin';
net = newff(minmax(inputn),[NodeNum TypeNum],{TF1 TF2},'trainlm'); % 指定训
练参数
net.trainParam.epochs = Epochs; % 最大训练次数
net.trainParam.goal = 1e-50; % 最小均方误差
net.trainParam.min_grad = 1e-20; % 最小梯度
net.trainParam.show = 200; % 训练显示间隔
net.trainParam.time = inf; % 大训练时间% 训练与测试
inputn_test=mapminmax('apply',input_text,inputps);
net = train(net,inputn,outputn); % 训练
X = sim(net,inputn_test) % 测试 - 输出为预测值
xiaobooutput=mapminmax('reverse',X,outputps)