简单的梯度下降展示——python

这篇博客介绍了梯度下降的基本概念,并通过Python展示了在二维和三维空间中的应用,是理解梯度下降算法的好资源。
摘要由CSDN通过智能技术生成
概念

梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。

二维的
# 梯度下降 == 导数值下降
import matplotlib.pyplot as plt
import numpy as np

# f(x) = x^2, 目标函数
# f'(x) = 2*x  梯度函数:一阶导数函数
# f(x1, x2...xn)


# 梯度下降算法是一个方法,是帮助我们找极值点的方法cost

def targetFunc(x):
    return (x-100)**2
    pass

def gradientFunc(x):
    return 2*x - 200
    pass

listx = []

# 猜测的过程
def gradientCal(initX, targetFunc, gradientFunc, rating=0.1, tolent=0.000000001):
    '''
    :param initX: 猜测的点
    :param targetFunc: 目标函数
    :param gradientFunc: 梯度函数
    :param rating: 步进系数
    :param tolent: 收敛条件
    :return: 返回极值点x值
    '''
    result = targetFunc(initX)           # 计算出initX这个点的实际值
    listx.append(initX)
    # 核心梯度下降公式  rating自己确定
    newX = initX - rating*gradientFunc(initX) #新x点
    newResult = targetFunc(newX) # 新结果

    reResult = np.abs(result - newResult) # 相差范围

    while reResult > tolent
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值