数学推导见相关参考书。
### 例子1:线性回归画图的例子-最小二乘法
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3,4,5,6,7,8,9]
y=[0.199,0.389,0.580,0.783,0.980,1.177,1.380,1.575,1.771]
print(np.ones(2))
#增加维度
A=np.vstack([x,np.ones(len(x))]).T
#调用最小二乘法函数
a,b=np.linalg.lstsq(A,y)[0]
#转换成numpy array
x=np.array(x)
y=np.array(y)
#画图
plt.plot(x,y,'o',label='Original data',markersize=10)
plt.plot(x,a*x+b,'r',label='fitted line')
plt.show()
### 例子2:线性回归2
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3,4,5,6,7,8,9]
y=[0.199,0.389,0.580,0.783,0.980,1.177,1.380,1.575,1.771]
#偏导数为0, ab计算
t1=t2=t3=t4=0
for i in range(len(x)):
t1+=y[i] # Σy
t2+=x[i] # Σx
t3+=x[i]*y[i] # Σxy
t4+=x[i]**2 # Σx^2
a = (t1*t2/n - t3) / (t2*t2/n - t4)
b = (t1 - a*