当前位置:   article > 正文

【预测模型】基于Elman神经网络房价预测matlab源码_房价预测模型matlab

房价预测模型matlab

一、简介


      介绍了极限学习机ELM的网络结构以及学习训练算法。



二、源代码

  1. % elm_stockpredict.m
  2. %% 清除工作空间中的变量和图形
  3. clear,clc
  4. close all
  5. %% 1.加载337期上证指数开盘价格
  6. load matlab.mat
  7. whos
  8. rng(1)
  9. %% ARMA模型
  10. z=iddata(y1);
  11. m=armax(z(1:19),'na',2,'nc',1);
  12. yp = predict(m,y1,1);
  13. yp=yp';
  14. yp=yp(:,157:end);
  15. %% 2.构造样本集
  16. % 数据个数
  17. price=y1;
  18. n=length(price);
  19. % 确保price为列向量
  20. price=price(:);
  21. % x(n) 由x(n-1),x(n-2),...,x(n-L)共L个数预测得到.
  22. L = 6;
  23. % price_n:每列为一个构造完毕的样本,共n-L个样本
  24. price_n = zeros(L+1, n-L);
  25. for i=1:n-L
  26. price_n(:,i) = price(i:i+L);
  27. end
  28. %% 划分训练、测试样本
  29. % 将前280份数据划分为训练样本
  30. % 后51份数据划分为测试样本
  31. trainx = price_n(1:6, 1:150);
  32. trainy = price_n(7, 1:150);
  33. testx = price_n(1:6, 151:end);
  34. testy = price_n(7, 151:end);
  35. %% 创建Elman神经网络
  36. % 包含15个神经元,训练函数为traingdx
  37. net=elmannet(1:2,15,'traingdx');
  38. % 设置显示级别
  39. net.trainParam.show=1;
  40. % 最大迭代次数为2000次
  41. net.trainParam.epochs=2000;
  42. % 误差容限,达到此误差就可以停止训练
  43. net.trainParam.goal=0.00001;
  44. % 最多验证失败次数
  45. net.trainParam.max_fail=5;
  46. % 对网络进行初始化
  47. net=init(net);
  48. %% 网络训练
  49. %训练数据归一化
  50. [trainx1, st1] = mapminmax(trainx);
  51. [trainy1, st2] = mapminmax(trainy);
  52. % 测试数据做与训练数据相同的归一化操作
  53. testx1 = mapminmax('apply',testx,st1);
  54. testy1 = mapminmax('apply',testy,st2);
  55. % 输入训练样本进行训练
  56. [net,per] = train(net,trainx1,trainy1);
  57. %% 测试。输入归一化后的数据,再对实际输出进行反归一化
  58. % 将训练数据输入网络进行测试
  59. train_ty1 = sim(net, trainx1);
  60. train_ty = mapminmax('reverse', train_ty1, st2);
  61. % 将测试数据输入网络进行测试
  62. test_ty1 = sim(net, testx1);
  63. test_ty = mapminmax('reverse', test_ty1, st2);
  64. % 显示真实值
  65. plot(x,testy,'b-');
  66. hold on
  67. % 显示神经网络的输出值
  68. plot(x,test_ty,'r--')
  69. % 显示ARMA的输出值
  70. plot(x,yp,'k--')
  71. legend('real price','prediction price of Elman','prediction price of ARMA')
  72. title('Test Results');
  73. % 显示均方误差
  74. mse2 = mse(test_ty - testy);
  75. fprintf(' Elman_mse = \n %f\n', mse2)
  76. mse3 = mse(yp - testy);
  77. fprintf(' ARMA_mse = \n %f\n', mse3)

三、运行结果


在这里插入图片描述




声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/94529
推荐阅读
相关标签
  

闽ICP备14008679号