线性回归
梯度下降法一般用于求解最小值,以下分别例举两种求最小值情况:
1)二次函数求最小值的情况
2)预测线性函数的情况(已知x和y,求解最合适的w和b,是预测误差最小)
以下就按照上述的两种情况进行分析。
1、二次函数求最小值的情况
1)首先导入包
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
2)定义二次函数与其导数方程,并画出函数图便于观察,也可以不画。
f = lambda x : x**2 -5*x + 10
g = lambda x : 2*x -5
x = np.linspace(-10,15,30)
plt.plot(x,f(x))
可以从图中观察或计算可得,最小值为2.5,用于与之后梯度下降求解到的最小值最对比。
3)开始使用梯度下降算法进行最小值求解
# 开始定义梯度下降算法
# 用于存放迭代结果,用于之后的可视化
result = []
# 随机初始化一个取最小值的x
v_ = np.random.randint(-10,10,size = 1)[0]
result.append(v_)
print('-----------随机初始化取最小值的x坐标',v_)
# 定义一个保存上一次迭代结果的变量
v_last = v_ + 1
# 设置结果的精准度
precision = 0.00001
# 设置最大迭代次数
max_count = 3000
# 迭代步幅
step = 0.1
count = 0
# 开始迭代
while True:
# 设置退出条件
if np.abs(v_ - v_last) < precision: