首先,线性规划,比较简单,对误差方程 Ex = (y-mx-c)^2 分别求偏导,再令偏导等于0 一步一步的求出m和c。 令偏导等于0的原因是为了寻找极致点,我们假设每次迭代的都是极值点,而极值点的特点是导数为0。
python代码表示就是:
for i in np.arange(1000000):
m = ((y - c)*x).sum()/(x*x).sum()
c = (y-m*x).sum()/y.shape[0]
数据是老师给的,mc要提前赋值(找个差不多像的随机值,不然要迭代好多次)
这样迭代下来的结果就是:
很明显,这些观测数据点是近似线性的,但是用线性规划不足以使误差达到很小的状态,所以现在的做法就是提高维度,用多个基础方程的形式表现,拟合出一个高维的空间模型,而这个模型我们用向量来表示,所以参数形式上还是线性的。
现在可以用代码生成一个多项式的方程:
def polynomial(x, degree, loc, scale):
degrees = np.arange(degree+1)
Phi =
((x-loc)/scale)**degrees
return Phi
这个东西算出来的返回值是:
这个形式的。
按照最小二乘法找误差:
E(w)=(y−X