当前位置:   article > 正文

1.多项式回归-matlab_matlab多项式回归

matlab多项式回归

实现多项式回归,李航《统计机器学习》关于偏导数的求解是错误的,使用正确的求导公式实现,并获得了期望的效果

  1. %输入空间
  2. X = [1;2;5;6;10];
  3. a = size(X, 1);
  4. b = size(X, 2);
  5. %输出空间
  6. Y = [1;10;2;9;1];
  7. %假设空间以及模型选择
  8. theta_1 = [0; 0];
  9. theta_2 = [0; 0; 0; 0];
  10. theta_3 = [0; 0; 0; 0; 0; 0];
  11. %一。利用正规方程求解损失函数为平方损失函数的多项式回归
  12. %1.选择假设空间theta_1
  13. SNX = [X];
  14. %添加X0默认为1,为了作为w0的输入
  15. SNX = [ones(size(SNX, 1),1),SNX];
  16. theta_1 = inv(transpose(SNX)*SNX)*transpose(SNX)*Y;
  17. figure('NAME', '平方损失一阶');
  18. plot(X,Y)
  19. hold on
  20. plot(X,SNX*theta_1)
  21. %2.选择假设空间theta_2
  22. SNX = [X, X.^2, X.^3];
  23. %添加X0默认为1,为了作为w0的输入
  24. SNX = [ones(size(SNX, 1),1),SNX];
  25. theta_2 = inv(transpose(SNX)*SNX)*transpose(SNX)*Y;
  26. figure('NAME', '平方损失三阶')
  27. plot(X,Y)
  28. hold on
  29. plot(X,SNX*theta_2)
  30. %3.选择假设空间theta_3
  31. SNX = [X, X.^2, X.^3, X.^4, X.^5];
  32. %添加X0默认为1,为了作为w0的输入
  33. SNX = [ones(size(SNX, 1),1),SNX];
  34. theta_3 = inv(transpose(SNX)*SNX)*transpose(SNX)*Y;
  35. figure('NAME', '平方损失五阶')
  36. plot(X,Y)
  37. hold on
  38. plot(X,SNX*theta_3)

 

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

闽ICP备14008679号