import numpy as np
from matplotlib import pyplot as plt
def calculate_w(x_data,y_data):#求解w的函数
x_data_mean=np.mean(x_data)
x_data_sum=np.sum(x_data)
x_data_quadratic_sum=0
for i in range(len(x_data)):
x_data_quadratic_sum+=x_data[i]**2
w_denominator=x_data_quadratic_sum-1/len(x_data)*(x_data_sum**2)#分母
w_numerator=0; #分子
for i in range(len(x_data)):
w_numerator+=y_data[i]*(x_data[i]-x_data_mean);
return w_numerator/w_denominator
def calculate_b(x_data,y_data,w):#求解b的函数
b=0
for i in range(len(x_data)):
b+=y_data[i]-w*x_data[i]
b=b/len(x_data)
return b
x_data=list([10,13,22,37,45,48,59,65,66,68,68,71,84,88,89,89])
y_data=list([19,60,71,74,69,89,146,130,153,144,128,123,127,125,154,150])
w=calculate_w(x_data,y_data)
b=calculate_b(x_data,y_data,w)
print(w)
print(b)
plt.scatter(x_data,y_data,color='g')
x=np.linspace(0,100,10000)
y=w*x+b
plt.plot(x,y,color='k')
plt.show()
本代码自己实现了一元线性回归