仅供娱乐
推导公式,多的是,百度一下你就知。
s
u
m
1
=
∑
i
=
1
n
[
x
i
(
y
i
−
y
‾
)
]
sum1 = \sum_{i=1}^{n}[x_{i}(y_{i}-\overline y)]
sum1=∑i=1n[xi(yi−y)]
s
u
m
2
=
∑
i
=
1
n
x
i
2
sum2 = \sum_{i=1}^{n}x_{i}^{2}
sum2=∑i=1nxi2
s
u
m
3
=
(
∑
i
=
1
n
x
i
)
2
sum3 = (\sum_{i=1}^{n}x_{i})^{2}
sum3=(∑i=1nxi)2
import numpy as np
import matplotlib.pylab as plt
x = np.arange(10)
y = 0.25*x + 5 + np.random.rand(len(x))
sum1 = 0
sum2 = 0
sum3 = 0
for i in range(len(x)):
sum1 += x[i]*(y[i]-np.mean(y))
sum2 += x[i] ** 2
sum3 += x[i]
w = sum1/(sum2-(1/len(x))*sum3**2)
b = np.mean(y) - w*np.mean(x)
y2 = x*w + b
print(w,b)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x,y)
ax.plot(x,y2,'r')
plt.show()
结果如下