数学推导见相关参考书。
### 例子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*t2) / n #转换成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() ### 例子3:线性回归3-马尔萨斯人口模型 # import numpy as np from scipy.optimize import curve_fit import matplotlib.pyplot as plt T = [1960,1961,1962,1963,1964,1965,1966,1967,1968] S = [29.72,30.61,31,51,32.13,32.34,32.85,33.56,34.20,34.83] #转换成numpy array xdata=np.array(T) ydata=np.log(np.array(S)) def func(x,a,b): return a+b*x #使用非线性最小二乘法拟合函数 popt,pcov = curve_fit(func,xdata,ydata) #画图 plt.plot(xdata,ydata,'ko',label='Original Noised Data') plt.plot(xdata,func(xdata,*popt),'r',label='fitted Curve') plt.show()