梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了三种梯度下降方法,分别为 批量梯度下降法、随机梯度下降法及小批量梯度下降法。
应用sklearn包求解线性回归
步骤如下:
1.首先导包
import numpy as np #导入数据处理包
import os #导入系统包
import matplotlib.pyplot as plt #Matplotlib是Python的一个绘图库,是Python中最常用的可视化工具之一
#pyplot模块的plot函数可以接收输入参数和输出参数,还有线条粗细等参数
%matplotlib inline #魔法命令,可以在Ipython编译器里直接使用,功能是可以内嵌绘图,并且可以省略掉plt.show()这一步。
2.准备画图前期相关内容
#画图
%matplotlib inline
# import matplotlib as mpl
import matplotlib.pyplot as plt
# 随机种子
np.random.seed(42)
# 保存图像
PROJECT_ROOT_DIR = "."
MODEL_ID = "linear_models"
def save_fig(fig_id,tight_layout = True): # 定义一个保存图像的函数
path = os.path.join(PROJECT_ROOT_DIR,"images",MODEL_ID,fig_id + ".png")#指定保存图像的路径,当前目录下的images文件夹下的linear_models文件夹
print("Saving figure",fig_id) #提示函数,正在保存图片
plt.savefig(path,format="png",dpi=300) #保存图片(指定保存路径,格式,清晰度)
#把讨厌的警告信息过滤掉(可有可无)
import warnings
warnings.filterwarnings(action = "ignore",message="^internal gelsd")
3.生成模型
x = 2*np.random.rand(100,1) #生成训练数据(特征部