import numpy as np import matplotlib.pyplot as plt import matplotlib.pylab as mpl from mpl_toolkits.mplot3d import Axes3D # 画图中文显示:不报错 mpl.rcParams['font.sans-serif'] = [u'simHei'] mpl.rcParams['axes.unicode_minus'] = False # 设置二维函数(有2个特征属性:x1, x2) def f(x1, x2): return 0.6 * (x1 + x2) ** 2 - x1 * x2 # 2个特征属性的求导得theta1, theta2 def hx1(x1, x2): return 1.2 * (x1 + x2) - x2 def hx2(x1, x2): return 1.2 * (x1 + x2) - x1 # 使用梯度下降法求解 GD_x1 = [] GD_x2 = [] GD_Y = [] # 设置初始化参数 x1 = 7 x2 = 6 alpha = 0.5 f_change = f(x1, x2) f_current = f_change GD_x1.append(x1) GD_x2.append(x2) GD_Y.append(f_current) # 设置迭代次数统计变量 iter_num = 0 # 设置迭代条件 while iter_num < 500 and f_change > 1e-10: iter_num += 1 pre_x1 = x1 pre_x2 = x2 x1 = pre_x1 - alpha * hx1(pre_x1, pre_x2) x2 = pre_x2 - alpha * hx2(pre_x1, pre_x2) tmp = f(x1, x2) # 梯度差值的绝对值
梯度下降算法3维图像示例
最新推荐文章于 2023-03-19 22:11:06 发布