梯度下降法实现

import numpy as np

theta0 = 0
theta1 = 0
theta2 = 1
alpha = 0.01
X = [[1,2.104,3],[1,1.600,3],[1,2.400,3],[1,1.416,2],[1,3.000,4]]
Y = [4.00,3.30,3.69,2.32,5.40]
def hx(theta0,theta1,theta2,alpha,X,Y):
    j = 0
    der0 = 0
    der1 = 0
    der2 = 0
    for i in range(5):
        hx = theta0 * X[i][0] + theta1 * X[i][1] +theta2 * X[i][2]
        j += 1/2 * (hx - Y[i])**2
        der0 = hx-Y[0]
        der1 = (hx-Y[1]) * X[i][1]
        der2 = (hx-Y[2]) * X[i][2]

        theta0 = theta0 - alpha * der0
        theta1 = theta1 - alpha * der1
        theta2 = theta2 - alpha * der2
    return j,theta0,theta1,theta2

for loop in range(500):
    j,theta0,theta1,theta2 = hx(theta0,theta1,theta2,alpha,X,Y)
    print(j,theta0,theta1,theta2)





实验结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值