机器学习实战Python机器学习大数据,机器学习,人工智能

梯度下降算法

2018-02-23  本文已影响76人  飘涯

x为需要求解的 值,s为梯度负方向,α为步长又叫学习率
缺点:靠近极小值的时候收敛速度比较慢;可能会”之字形”的下降;不太 适合处理比较复杂的非线性函数问题。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

def f(x):
    return x**2
def h(x):
    return 2*x
X=[]
Y=[]

x=2
step=0.8
f_change=f(x)
f_current=f(x)
X.append(x)
Y.append(f_current)
while f_change>np.e**-10:
    x=x-step*h(x)
    tmp=f(x)
    f_change=np.abs(f_current-tmp)
    f_current=tmp
    X.append(x)
    Y.append(f_current)
print(X)
print(Y)
print(x,f_current)
fig = plt.figure()
a=np.arange(-2.15,2.15,0.05)
b=a**2
plt.plot(a,b)
plt.plot(X,Y,"ro--")
plt.show()

运行结果如下:


image.png
上一篇 下一篇

猜你喜欢

热点阅读