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

手写python实现梯度下降算法

因为课程设计的原因,接触了很多和机器学习相关的事情
在学习的时候发现,机器学习如果只是听不写代码基本什么都学习不到
于是自己利用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 

你可能感兴趣的:(python,算法,线性回归)