梯度下降算法

import numpy as np

a = np.array([1,2,3,np.nan])
a[np.isnan(a) ]=0   
    
            
def gd(x_start,step,g):
    """
    param x_start:初始化数据点
    param step:梯度下降的步长
    param g:梯度函数
    return :迭代终止的点
    """
    x = x_start
    for i in range(200):
        grad = g(x)
        x -= grad*step
        print("epoch{0},grad={1},x={2}".format(i,grad,x))
        if abs(grad)<1e-6:
            break
    return x

def f(x):
    """
    需要优化的目标函数
    """
    return x**2 - 2*x + 1

def g(x):
    """
    目标函数的梯度函数
    """
    return 2*x

gd(5,0.1,g)
原文地址:https://www.cnblogs.com/wzdLY/p/9719431.html