1.1 线性回归中的两种梯度下降算法(cs229)及其Python实现(纯列表)

在这里插入图片描述

#C++风格代码···

#定义输入输出变量

x=[[1,i]
for i in range(1,11)]

y=[1.212*i+2.331*j for i,j in x]

#m*n维的矩阵

m=10

n=2

#初始参数值

theta=[1,1]

#学习率

a=0.005

#分类函数

def hypothesis(x):

    sum=0

    for j in range(n):

       
sum+=x[j]*theta[j]

    return sum

#损失函数

def loss_function():

    sum=0

    for i in range(m):

       
sum+=(hypothesis(x[i])-y[i])**2

    return sum/2

#迭代4000次

for k in range(4000):

        sum=[0,0]

        for i in range(m):

           
error=y[i]-hypothesis(x[i]);

            for j in range(n):

                sum[j]+=error*x[i][j];

        for i in range(n):

           
theta[i]+=a*sum[i]

print(theta)

#其实Python一行就能搞定···
#可以写成矩阵乘积形式,求和可以用内积来代替,因此,普遍写法其实是这样的(dot表示向量的点乘))
#常数*(n+1 * m)维矩阵乘(m * 1)维矩阵。
theta+= alpha*X.T.dot(Y-X.dot(theta))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值