简单线性回归的实现

  • 首先给出一个简单的示例
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1., 2., 3., 4., 5.])
y = np.array([1., 3., 2., 3., 5.])
plt.scatter(x,y)
plt.show()

效果:
这里写图片描述
可以清楚看到点的分布情况,接下来我们尝试寻找一条合适的拟合曲线,拟合出这些点的分布情况,并且做出图,我们要寻找的拟合曲线为:
y=ax+b,其中a,b是未知数,根据公式我们求出a,b为:
这里写图片描述
接下来我们代码实现(由数据推算出a,b)

num=0.0#a的分母和
d=0 #a的分子和
x_mean=np.mean(x)#a的均值
y_mean=np.mean(y)#b的均值
for x_i,y_i in zip(x,y):
    num+=(x_i-x_mean)*(y_i-y_mean)
    d+=(x_i-x_mean)**2
a=num/d#a的值(根据公式)
b=y_mean-a*x_mean#b的值
y_predict=a*x+b#拟合曲线的公式

plt.scatter(x,y)#散点
plt.plot(x,y_predict,color="r")#拟合曲线
plt.show()      

效果:
这里写图片描述

x_predict=6
y_predict=a*x_predict+b
y_predict

5.2

猜你喜欢

转载自blog.csdn.net/ayangann915/article/details/81052386
今日推荐