先上代码,日后详解
梯度下降算法
一个变量
代码实现:
#梯度下降==导数下降
import matplotlib.pyplot as plt
import numpy as np
# f(x)=x^2 目标函数
# f'(x)=2*x 梯度函数:一阶导数函数
#梯度下降算法是一个方法,是帮助我们找极值点的方法 凸函数
def targetFunc(x):
return x**2
pass
def gradientFunc(x):
return 2*x
pass
listx = []
#猜测的过程
def grandientCal(initX,targetFunc,gradientFunc,rating=0.1,tolent=0.0001,times=5000):
'''
:param initX: 猜测的点
:param targetFunc: 目标函数
:param gradientFunc: 梯度函数
:param rating: 步进系数(移动的距离)
:param tolent: 收敛条件(极小)
:return: 返回极值点的x值
'''
result = targetFunc(initX) #计算出initX点的实际值(值)
# gradientresult = gradientFunc(initX) #计算出initX点的斜率(导数/梯度)
listx.append(initX)
newX = initX - rating* gradientFunc(initX)
newresult = targetFunc(newX