当前位置: 首页 > news >正文

网站快速排名技巧网络营销课程论文

网站快速排名技巧,网络营销课程论文,企业网站设计说明,制作作业平台网站的设计%% 初始化程序 warning off % 关闭报警信息 close all % 关闭所有图窗 clear % 清空变量 clc % 清空命令行 setdemorandstream(172) %设置随机种子为1%% 读取数据 data xlsread(Y.xlsx); %% 划分训练集…
%% 初始化程序
warning off         % 关闭报警信息
close all               % 关闭所有图窗
clear                    % 清空变量
clc                        % 清空命令行
setdemorandstream(172)       %设置随机种子为1%% 读取数据
data = xlsread('Y.xlsx');
%% 划分训练集与测试集
temp = randperm(72);  % 产生1到2000的乱序,用来随机抽取训练集和测试集
inputTrainDataset = data(temp(1:50), 1:20)';  % 前1900行数据训练,1到12列为输入变量
outputTrainDataset = data(temp(1:50), 21)';   % 前1900行数据训练,13列为输出目标inputTestDataset = data(temp(50:72), 1:20)'; % 1901到2000行数据训练,1到12列为输入变量
outputTestDataset = data(temp(50:72), 21)';  % 1901到2000行数据训练,13列为输出目标
%% 归一化处理
[inputn_train, input_ps] = mapminmax(inputTrainDataset, 0, 1);
inputn_test = mapminmax('apply', inputTestDataset, input_ps);
[outputn_train, output_ps] = mapminmax(outputTrainDataset, 0, 1);%% 确定神经网络结构
inputnode = 20;  % 输入层的神经元节点数量
outputnode = 1;   %输出层的神经元节点数量% 以下用于确定隐含层的神经元节点数量
bound = 3 : 1 : 15;  % 在3到15范围内试凑隐含层的神经元节点数量
cnt = 1;  % 迭代计数
for k = boundnet=newff(inputn_train,outputn_train,k,{'tansig','purelin'},'trainlm');net.trainParam.epochs=1000;                                 % 训练次数net.trainParam.lr=0.01;                                           % 学习速率net.trainParam.goal=1e-5;                                      % 训练目标最小误差net.trainParam.showWindow = 0;                           % 关闭仿真界面net=train(net,inputn_train,outputn_train);                %开始训练model_out = sim(net, inputn_train);                         % 训练集的归一化预测结果e(cnt) = mean((model_out - outputn_train).^2);      % 训练集仿真的根均方误差disp(['隐含层节点数量为: ', num2str(k), ', 相应的训练集归一化根均方误差(RMSE)值为: ', num2str(e(cnt))])cnt = cnt + 1;                                                           % 迭代次数+1
end
hiddennode = bound(find(e == min(e), 1));                  % 找到根均方误差最小时对应的最少隐含层节点数量,将之当做最优隐含层节点
disp(['最佳的隐含层节点数量为: ', num2str(hiddennode), ', 相应的训练集归一化根均方误差(RMSE)值最小, 为: ', num2str(e((find(e == min(e), 1))))])%% 建立模型
net=newff(inputn_train,outputn_train,hiddennode,{'tansig','purelin'},'trainlm');
net.trainParam.epochs=1000;         % 训练次数
net.trainParam.lr=0.01;                   % 学习速率
net.trainParam.goal=1e-5;                    % 训练目标最小误差
%开始训练
net=train(net,inputn_train,outputn_train);
%% 预测和反归一化
model_out1 = sim(net, inputn_train);  % 训练集的归一化预测结果
model_out2 = sim(net, inputn_test);    % 测试集的归一化预测结果
predictTrainDataset = mapminmax('reverse', model_out1, output_ps);  % 反归一化训练集预测结果为原始数量级
predictTestDataset = mapminmax('reverse', model_out2, output_ps);    % 反归一化测试集预测结果为原始数量级
%% 分析误差
disp(' ')
disp('训练集误差计算如下: ')
MSE = mean((outputTrainDataset - predictTrainDataset).^2);
disp(['均方误差MSE = ', num2str(MSE)])
MAE = mean(abs(outputTrainDataset - predictTrainDataset));
disp(['平均绝对误差MAE = ', num2str(MAE)])
RMSE = sqrt(MSE);
disp(['根均方误差RMSE = ', num2str(RMSE)])
MAPE = mean(abs((outputTrainDataset - predictTrainDataset)./outputTrainDataset));
disp(['平均绝对百分比误差MAPE = ', num2str(MAPE*100), '%'])
R = corrcoef(outputTrainDataset, predictTrainDataset);
R2 = R(1, 2)^2;
disp(['拟合优度R2 = ', num2str(R2)])
disp(' ')
disp('测试集误差计算如下: ')
MSE_test = mean((outputTestDataset - predictTestDataset).^2);
disp(['均方误差MSE = ', num2str(MSE_test)])
MAE_test = mean(abs(outputTestDataset - predictTestDataset));
disp(['平均绝对误差MAE = ', num2str(MAE_test)])
RMSE_test = sqrt(MSE_test);
disp(['根均方误差RMSE = ', num2str(RMSE_test)])
MAPE_test = mean(abs((outputTestDataset - predictTestDataset)./outputTestDataset));
disp(['平均绝对百分比误差MAPE = ', num2str(MAPE_test*100), '%'])
R_test = corrcoef(outputTestDataset, predictTestDataset);
R2_test = R_test(1, 2)^2;
disp(['拟合优度R2 = ', num2str(R2_test)])
%% 对结果作图
% 训练集
figure
plot(outputTrainDataset, 'b*-', 'LineWidth', 0.8)
hold on
plot(predictTrainDataset, 'ro-', 'LineWidth', 0.8)
grid on
xlabel('训练样本序号')
ylabel('目标')
legend('实际值', '预测值')
title({'BP神经网络预测训练集预测值和实际值对比图', ['根均方误差RMSE = ', num2str(RMSE), '拟合优度R2 = ', num2str(R2)]})figure
plot(outputTrainDataset - predictTrainDataset, 'b*-', 'LineWidth', 0.8)
grid on
xlabel('训练样本序号')
ylabel('预测偏差')
legend('误差')
title({'BP神经网络预测训练集预测误差图', ['平均绝对百分比误差MAPE = ', num2str(MAPE*100), '%']})% 测试集
figure
plot(outputTestDataset, 'b*-', 'LineWidth', 0.8)
hold on
plot(predictTestDataset, 'ro-', 'LineWidth', 0.8)
grid on
xlabel('测试样本序号')
ylabel('目标')
legend('实际值', '预测值')
title({'BP神经网络预测测试集预测值和实际值对比图', ['根均方误差RMSE = ', num2str(RMSE_test), '拟合优度R2 = ', num2str(R2_test)]})figure
plot(outputTestDataset - predictTestDataset, 'b*-', 'LineWidth', 0.8)
grid on
xlabel('测试样本序号')
ylabel('预测偏差')
legend('误差')
title({'BP神经网络预测测试集预测误差图', ['平均绝对百分比误差MAPE = ', num2str(MAPE_test*100), '%']})% 获取输入层到第一个隐藏层的权重
weights_input_to_hidden = net.IW{1,1};% 显示权重矩阵
disp('Input to hidden layer weights:');
disp(weights_input_to_hidden);
%% 参数
% 获取输入层到第一个隐藏层的权重
weights_input_to_hidden = net.IW{1,1};
disp('Input to hidden layer weights:');
disp(weights_input_to_hidden);
% 获取第一个隐藏层到输出层的权重
weights_hidden_to_output = net.LW{2,1};
disp('Hidden to output layer weights:');
disp(weights_hidden_to_output);
% 获取输入层的偏置
biases_output_layer = net.b{1};
disp('Input Layer Biases:');
disp(biases_output_layer);
% 获取隐藏层的偏置
biases_output_layer = net.b{2};
disp('hidden Layer Biases:');
disp(biases_output_layer);

以下是对上述代码功能的详细解释:

  1. 初始化部分
    • warning off:关闭报警信息,避免一些不必要的警告信息干扰程序的运行。
    • close all:关闭所有打开的图形窗口,确保程序开始时处于一个干净的图形环境。
    • clear:清空工作区中的变量,防止之前的变量影响当前程序的运行。
    • clc:清空命令行窗口,使命令行更加清晰。
    • setdemorandstream(172):设置随机种子为 172,确保程序运行结果的可重复性,使得随机过程在多次运行时产生相同的结果。
  2. 数据读取部分
    • data = xlsread('Y.xlsx'):从名为 Y.xlsx 的 Excel 文件中读取数据。
  3. 数据集划分部分
    • temp = randperm(72):生成一个 1 到 72 的随机排列序列,用于随机抽取训练集和测试集。
    • inputTrainDataset = data(temp(1:50), 1:20)':将数据的前 50 个随机索引对应的行的第 1 到 20 列作为输入训练集,并进行转置。
    • outputTrainDataset = data(temp(1:50), 21)':将数据的前 50 个随机索引对应的行的第 21 列作为输出训练集,并进行转置。
    • inputTestDataset = data(temp(50:72), 1:20)':将数据的第 50 到 72 个随机索引对应的行的第 1 到 20 列作为输入测试集,并进行转置。
    • outputTestDataset = data(temp(50:72), 21)':将数据的第 50 到 72 个随机索引对应的行的第 21 列作为输出测试集,并进行转置。
  4. 归一化处理部分
    • [inputn_train, input_ps] = mapminmax(inputTrainDataset, 0, 1):将输入训练集的数据归一化到 0 到 1 的范围,并存储归一化的结果和归一化参数。
    • inputn_test = mapminmax('apply', inputTestDataset, input_ps):使用训练集的归一化参数对输入测试集进行归一化处理。
    • [outputn_train, output_ps] = mapminmax(outputTrainDataset, 0, 1):将输出训练集的数据归一化到 0 到 1 的范围,并存储归一化的结果和归一化参数。
  5. 神经网络结构确定部分
    • inputnode = 20:设置输入层的神经元节点数量为 20。
    • outputnode = 1:设置输出层的神经元节点数量为 1。
    • 对隐含层的神经元节点数量进行试凑:
      • bound = 3 : 1 : 15:设置隐含层神经元节点数量的试凑范围从 3 到 15。
      • 使用 for 循环遍历 bound 中的每个节点数量 k
        • net=newff(inputn_train,outputn_train,k,{'tansig','purelin'},'trainlm'):创建一个新的前馈神经网络,激活函数分别为 tansigpurelin,训练算法为 trainlm
        • net.trainParam.epochs=1000:设置训练次数为 1000 次。
        • net.trainParam.lr=0.01:设置学习速率为 0.01。
        • net.trainParam.goal=1e-5:设置训练目标最小误差为 1e-5。
        • net.trainParam.showWindow = 0:关闭仿真界面。
        • net=train(net,inputn_train,outputn_train):使用输入训练集和输出训练集对网络进行训练。
        • model_out = sim(net, inputn_train):使用训练好的网络对输入训练集进行仿真,得到归一化预测结果。
        • e(cnt) = mean((model_out - outputn_train).^2):计算训练集的归一化根均方误差,并存储在 e 数组中。
        • disp(['隐含层节点数量为: ', num2str(k), ', 相应的训练集归一化根均方误差(RMSE)值为: ', num2str(e(cnt))]):显示当前隐含层节点数量及其对应的训练集的归一化根均方误差。
      • hiddennode = bound(find(e == min(e), 1)):找到使根均方误差最小的隐含层节点数量,作为最优的隐含层节点数量。
      • disp(['最佳的隐含层节点数量为: ', num2str(hiddennode), ', 相应的训练集归一化根均方误差(RMSE)值最小, 为: ', num2str(e((find(e == min(e), 1))))]:显示最佳的隐含层节点数量及其最小的根均方误差。
  6. 模型建立部分
    • net=newff(inputn_train,outputn_train,hiddennode,{'tansig','purelin'},'trainlm'):使用最优的隐含层节点数量建立最终的神经网络。
    • net.trainParam.epochs=1000:设置训练次数为 1000 次。
    • net.trainParam.lr=0.01:设置学习速率为 0.01。
    • net.trainParam.goal=1e-5:设置训练目标最小误差为 1e-5。
    • net=train(net,inputn_train,outputn_train):使用输入训练集和输出训练集对最终的神经网络进行训练。
  7. 预测和反归一化部分
    • model_out1 = sim(net, inputn_train):使用训练好的网络对输入训练集进行仿真,得到归一化预测结果。
    • model_out2 = sim(net, inputn_test):使用训练好的网络对输入测试集进行仿真,得到归一化预测结果。
    • predictTrainDataset = mapminmax('reverse', model_out1, output_ps):将训练集的归一化预测结果反归一化到原始数据范围。
    • predictTestDataset = mapminmax('reverse', model_out2, output_ps):将测试集的归一化预测结果反归一化到原始数据范围。
  8. 误差分析部分
    • 计算训练集的各种误差指标:
      • MSE = mean((outputTrainDataset - predictTrainDataset).^2):计算训练集的均方误差。
      • MAE = mean(abs(outputTrainDataset - predictTrainDataset)):计算训练集的平均绝对误差。
      • RMSE = sqrt(MSE):计算训练集的根均方误差。
      • MAPE = mean(abs((outputTrainDataset - predictTrainDataset)./outputTrainDataset)):计算训练集的平均绝对百分比误差。
      • R = corrcoef(outputTrainDataset, predictTrainDataset):计算训练集实际值和预测值的相关系数矩阵。
      • R2 = R(1, 2)^2:计算训练集的拟合优度。
    • 计算测试集的各种误差指标:
      • MSE_test = mean((outputTestDataset - predictTestDataset).^2):计算测试集的均方误差。
      • MAE_test = mean(abs(outputTestDataset - predictTestDataset)):计算测试集的平均绝对误差。
      • RMSE_test = sqrt(MSE_test):计算测试集的根均方误差。
      • MAPE_test = mean(abs((outputTestDataset - predictTestDataset)./outputTestDataset)):计算测试集的平均绝对百分比误差。
      • R_test = corrcoef(outputTestDataset, predictTestDataset):计算测试集实际值和预测值的相关系数矩阵。
      • R2_test = R_test(1, 2)^2:计算测试集的拟合优度。
  9. 结果作图部分
    • 对训练集的实际值和预测值进行绘图,并显示误差信息。
    • 对测试集的实际值和预测值进行绘图,并显示误差信息。
  10. 参数获取部分
    • weights_input_to_hidden = net.IW{1,1}:获取输入层到第一个隐藏层的权重矩阵。
    • weights_hidden_to_output = net.LW{2,1}:获取第一个隐藏层到输出层的权重矩阵。
    • biases_output_layer = net.b{1}:获取输入层的偏置。
    • biases_output_layer = net.b{2}:获取隐藏层的偏置。

总的来说,该程序是一个使用 BP 神经网络进行数据预测的完整流程,包括数据读取、数据预处理(划分数据集和归一化)、神经网络结构的确定(试凑隐含层节点数量)、训练、预测、结果反归一化、误差分析和结果可视化,并展示了神经网络的部分权重和偏置信息。

http://www.hkea.cn/news/991227/

相关文章:

  • 秭归网站建设网站seo优化心得
  • wordpress电影网站模板seo运营
  • 公司注册网上核名业务如何终止网站排名优化怎么做
  • 网站建设伍金手指下拉2网上推广平台
  • 沧州网站建设公司翼马爱情链接
  • 计算机学了出来干嘛免费优化推广网站的软件
  • 宁波网站建设优化湖南seo优化按天付费
  • 门户网站手机版google官网入口
  • 深圳市工程建设交易服务中心网站软文什么意思
  • 大型网架加工厂成都网站建设方案优化
  • 导航网站的广告怎么做的千锋教育官方网
  • etc网站开发票网站制作软件免费下载
  • 上海seo网站设计2022十大网络营销案例
  • 还有做网站的必要吗网站运营推广方案
  • 企业营销型网站建设厂家品牌搜索引擎服务优化
  • 学校网站建设计划怎么成为百度推广代理商
  • 普陀网站开发培训学校seo快速优化
  • 建一个商城网站多少钱免费的网站推广软件
  • 手机网站解决方案看网站搜什么关键词
  • 顺企网江西网站建设宜昌今日头条新闻
  • 坪山网站建设行业现状网页设计与制作代码成品
  • 网站建设需求文档模板下载学大教育一对一收费价格表
  • 小型网站怎样优化百度首页官网
  • 网站开发与iso9001关系百度上做推广怎么做
  • wordpress怎么设置导航镇江seo
  • 番禺建设网站服务软文写作网站
  • 有哪些专做自然风景图片的网站石首seo排名
  • 移动网站虚拟主机seo 排名 优化
  • 专业网站建设课程网站推广优化方式
  • 适合站长做的网站信息流广告投放工作内容