上一篇文章写了简单线性回归的一些基本信息,这一篇来写一下怎样求具体参数
如上图所示,我们来简单求一下相关参数
分子=(1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-20)+(3-2)(27-20)=20
分母=(1-2)^2 + (3-2)2+(2-2)2+(1-2)2+(3-2)2=4
b1=20/4=5
所以b0=20-5x2=10
所以该回归方程为y=5x+10
求出方程之后我们即可以进行预测,指导x可以预测y,知道y可以预测x
现在我们看一下在Python中如何实现
import numpy as np
def fitSLR(x,y):#定义参数方程
n=len(x)
dinominator=0
numerator=0
for i in range(0,n):
numerator+=(x[i]-np.mean(x))*(y[i]-np.mean(y))
dinominator+=(x[i]-np.mean(x))**2
print('numerator:',numerator)
print('dinominator:',dinominator)
b1=numerator/float(dinominator)
b0=np.mean(y)/float(np.mean(x))
return b0,b1
def predict(x,b0,b1):
return b0+x*b1
x=[1,3,2,1,3]
y=[14,24,18,17,27]
b0,b1=fitSLR(x,y)
print('intercept:',b0,'slope:',b1)
x_test=6
y_test=predict(6,b0,b1)
print('y_test:',y_test)
可以,结果蛮不错