梯度下降预测房价

通过梯度下降预测的实际过程是求代价函数最小值,对于代价函数来说,其自变量是预测函数的参数(本例是两个),预测函数为y=a*x+b形式的代价函数是一种二维曲面,我们先给两个自变量赋初值,对应的就是曲面上的一个点,然后分别让这两个自变量沿着梯度的反方向移动,移动的步长是梯度乘学习率,当两个梯度的值小于误差阈值时可视为到达了最低点。

import matplotlib.pyplot as plt
import random
import matplotlib
#输入数据,x是面积,y是房价
x = [150,200,250,300,350,400,600]
y = [6450,7450,8450,9450,11450,15450,18450]
#学习率
alpha = 0.00001
#初始化参数的值
theta1=0
theta0=0
#误差
e=0.001
#函数y=theta0+theta1*x
def f(x):
    return theta1*x+theta0
while True:
    a = [0, 0]
    # 下面这两个求偏导的公式其实是代价函数对分别对theta0和theta1求导推理得到的,所以下面只是#针对y=a*x+b这种函数的代价函数的梯度
    for i in range(len(x)):
        a[0] += f(x[i]) - y[i]  # 对theta0求导
        a[1] += (f(x[i]) - y[i]) * x[i]  # 对theta1求导
    theta0 = theta0 - alpha  * a[0]/len(x)
    theta1 = theta1 - alpha  * a[1]/len(x)
    # 当两个偏导小于误差阈值时退出循环
    if a[0] 
  

    另外本文并没有用代码实现代价函数,代价函数可以用矩阵的形式表示出来,这样就可以针对多元线性回归函数的代价函数的偏导,本人能力有限没能实现,本文只针对一元线性回归的预测函数。。。。。

代价函数是

梯度下降预测房价_第1张图片

 代价函数对θi求偏导的结果公式是(梯度)

梯度下降预测房价_第2张图片

 如有不对请指出,感谢批评!

你可能感兴趣的:(python,机器学习,开发语言)