最小二乗法で線形近似(python,numpy)
pythonのnumpyで最小二乗法で線形近似し傾き,切片,回帰式を取得したいと思います.
```python
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
def main():
X = [1,2,3,4,5]
Y = [1.1, 2.1, 2.8, 4.3, 5.1]
A = np.array([X,np.ones(len(X))])
A = A.T
#線形回帰(np.linalg.lstsq)を実行してa:傾き、b:切片を取得。
a,b = np.linalg.lstsq(A,Y)[0]
print("a(傾き):{}".format(a))
print("b(切片):{}".format(b))
#X,Y生データのプロット
plt.plot(X,Y,"ro")
#y=a*X;bの回帰式をプロット
plt.plot(X,(a*X+b),"g--")
plt.grid()
plt.show()
if __name__ == '__main__':
main()
```
出力結果
a(傾き):1.02
b(切片):0.02