手写python实现梯度下降算法(base问题:多元线性回归)

本文介绍了如何手写Python实现梯度下降算法,特别是在多元线性回归问题中的应用。梯度下降是机器学习中常用的一种优化方法,用于寻找全局最优解。文中提供了一段实现代码,包含自动调整学习率的功能,并能绘制相关图形。通过理解并实践这些代码,读者可以更好地掌握机器学习中的基础算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手写python实现梯度下降算法

因为课程设计的原因,接触了很多和机器学习相关的事情
在学习的时候发现,机器学习如果只是听不写代码基本什么都学习不到
于是自己利用python手写了大部分的常见的基础的算法
很有趣呢~慢慢更新咯

简介

①梯度下降算法是在机器学习中常见的一种优化寻找最优模型的方法
②是一种参数优化的方式,优化的时候让参数减去一定比例的梯度的方向就可以了
③一般是凸问题的时候,可以帮我们最大程度的找到全局最优解(但是凸问题少啊!)
④编程基本没有难度,直接按照数学公式写就成~我这里的梯度下降公式是按照多元线性回归问题计算的,所以gradient_function(theta,X,Y)里面是那样写的,根据不同的问题,自己改变下导数的计算方式就可
⑤我的程序可以实现自动调整学习率,主要的思路是,当发现cost上升的时候,把参数调整到原来的大小,然后减小学习率~其实就是多了一个if判断,不需要的话删除就好。

实现代码

# 多元线性回归函数使用规范
# 输入的X,Y均为数组类型
# 要求输入X每行表示一个样本,Y为列向量
# 要求输入的数据具有常数项,即需要在样本数据中加入一个新的维度,这个维度作为常数项,每一个值都是1
# 要求输入的数据如果存在数量级相差较大的情况,需要对数据进行预处理
# 最后本程序不赞成不加分析就把任何的数据进行回归,很多变量可能与问题无关
# 计算代价大小
def cost_function(theta,X,Y):
    diff = np.dot(X,theta)-Y   # 计算差值,之后利用矩阵完成平方的工作
    cost = (1/(2*Y.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值