import numpy as np
#from matplotlib import pylab as pl
import matplotlib.pylab as pl
#线性回归
x = np.array([1,3,2,1,3])
y = np.array([14,24,18,17,27])
#定义回归函数
def fit(x,y):
if len(x)!=len(y):
return;
numerator = 0;
denominator = 0;
x_mean = np.mean(x)#算数平均数
y_mean = np.mean(y)
for i in range(len(x)):
numerator += (x[i] - x_mean) * (y[i] - y_mean)
denominator += np.square(x[i] - x_mean)
b1 = numerator / denominator
b0 = y_mean - b1 * x_mean
return b0 ,b1;
#定义预测函数
def predict(x,b0,b1):
return b0 + b1 * x
#求取回归方程
b0 , b1 = fit(x,y)
#预测
x_test = np.array([1.2,8.5,4.6,7.9,6])
# print('xtest的长度是',len(x_test),x_test[2])
y_test = np.zeros((1,len(x_test)))
print("ssssss",len(y_test))
for i in range(len(x_test)):
y_test[0][i] = predict(x_test[i],b0,b1)
if __name__ == '__main__':
# print('Line is:y = %2.0fx + %2.0f'%(b1,b0))
# for i in range(len(x_test)):
# print(y_test[0][i])
#绘制图像
xx = np.linspace(0,10)
yy = b1 * xx + b0
pl.plot(xx,yy)
pl.scatter(x,y)
pl.scatter(x_test,y_test[0])
pl.show()