题解 | 使用梯度下降的线性回归

使用梯度下降的线性回归

https://www.nowcoder.com/practice/e9f12bb403f44847b44e287d5a71e56c

梯度下降法的过程步骤
1.初始化参数:初始化w和b的值

2.计算损失函数

3.计算梯度:计算损失函数对w和b的偏导值

4.更新参数:更新w和b的值,自身减去偏导值

5.重复操作:重复2-4的操作直到收敛或达到最大迭代次数

对于第3步计算梯度,在这里给出公式

在这里直接用来代替系数和截距的偏导值了

再回看这道题,我们发现题目中说明了数组 X(具有一列截距的特征)
所以这里是不用处理b的,我们只需要对w进行梯度处理即可。

代码如下:


import numpy as np
import json

# 输入矩阵和向量
matrix_inputx = input()
array_y = input()
alpha = float(input())
iterations = int(input())

x = np.array(json.loads(matrix_inputx))
y = np.array(json.loads(array_y)).reshape(-1, 1)
# 这里需要处理y,因为y是一个一维矩阵,为了方便后面计算,我们将其改为(4,1)
n_samples, n_features = x.shape
w = np.zeros((n_features, 1))
learning_rate = alpha

# 梯度下降过程
# 套用上面说的公式即可
for i in range(iterations):
    y_pred = np.dot(x, w)
    dw = -(1 / n_samples) * (x.T @ (y - y_pred)) # @是矩阵乘法运算符
    w = w - alpha * dw

print(np.round(w.flatten(), 4))
全部评论

相关推荐

看新闻上说,印度媒体都在密集发申请攻略,咨询量直接涨了30%印度、韩国、新加坡的申请意愿特别突出,感觉要成科技人才的新选择了~我的offer还没有呢!
ysb:哥们就不明白了,自己的人才都留不住,然后找外国,咋滴给外国人才高福利朝九晚五不加班是吗,然后我们大学生996,加班,无offer,摆地摊,送外卖是吗,有点意思,很英明
我的秋招日记
点赞 评论 收藏
分享
08-29 17:17
已编辑
门头沟学院
嗨害嗨我来了:张总:你们这些年轻人,这不是把我的爱好暴露了吗?
工作时那些社死瞬间
点赞 评论 收藏
分享
今天要投简历吗? 国庆期间真的不投比较好吗? emmmmmm
想要offer的每一...:可以去投,谁回你,你就拉黑他,国庆还上班,贼黑心
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务