当前位置:   article > 正文

python3__机器学习__神经网络基础算法__最小二乘法(LS算法)_ls最小二乘

ls最小二乘

1.LS算法说明

LS算法是一种数学优化技术,也是一种机器学习常用算法。他通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便的求得未知的数据(1),并使得这些求得的数据与实际数据之间误差的平方和最小。除此之外最小二乘法还可用于曲线拟合(2),其他一些优化问题(3)也可通过最小化鞥能量或最大化熵用最小二乘法表示。

2.LS算法原理

最小二乘法实际上解决的是当Ax=C无解的情况下的最优解。

 

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. # 两个点A和C
  4. A = np.array([[3], [1]])
  5. C = np.array([[1], [3]])
  6. # np.linalg.inv: 计算矩阵的逆
  7. # np.linalg: 提供线性代数工具的模块
  8. # x' = (A.T*A)^(-1)*A.T*C
  9. AA = np.linalg.inv(A.T.dot(A))
  10. B = A.T.dot(C)
  11. l = AA.dot(B)
  12. # P=Ax'
  13. P = A.dot(l)
  14. x = np.linspace(-2, 2, 10)
  15. x.shape = (1, 10)
  16. # 画出直线y=ax
  17. # A:(2, 1)
  18. # x:(1, 9)
  19. # xx:(2, 9)
  20. xx = A.dot(x)
  21. fig = plt.figure(figsize=(10, 6))
  22. ax = fig.add_subplot(111)
  23. ax.plot(xx[0, :], xx[1, :])
  24. # 画出A点
  25. ax.plot(A[0], A[1], "ko")
  26. # 画出C点和P点的连线
  27. ax.plot([C[0], P[0]], [C[1], P[1]], "r-o")
  28. # 画出OC曲线
  29. ax.plot([0, C[0]], [0, C[1]], "m-o")
  30. # 画出坐标轴
  31. ax.axvline(x=0, color="b")
  32. ax.axhline(y=0, color="b")
  33. # 标写每个点的字母
  34. # margin: 偏移量
  35. # ax.text: 在坐标轴上添加文本
  36. margin = 0.1
  37. ax.text(A[0]+margin, A[1]+margin, r"A", fontsize=20)
  38. ax.text(C[0]+margin, C[1]+margin, r"C", fontsize=20)
  39. ax.text(P[0]+margin, P[1]+margin, r"P", fontsize=20)
  40. ax.text(0+margin, 0+margin, r"o", fontsize=20)
  41. ax.text(0+margin, 4+margin, r"y", fontsize=20)
  42. ax.text(4+margin, 0+margin, r"x", fontsize=20)
  43. plt.xticks(np.arange(-2, 3))
  44. plt.yticks(np.arange(-2, 3))
  45. ax.axis("equal")
  46. plt.show()

 

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

闽ICP备14008679号