就我所知,通过更新权重(重复直到收敛),使用梯度下降算法将成本降至最低,在线性回归的情况下,我们有

m : slope

c : intercept (constant value)
import numpy as np
from sklearn.linear_model import LinearRegression

x= np.asarray([(i+np.random.randint(1,7)) for i in range(1,31)]).reshape(-1,1)

y= np.dot([3],x.T) + 5

reg = LinearRegression()

reg.fit(x,y)

我已经使用了sklearn库,但在这里,我们没有在初始化或执行reg.fit()时将迭代和学习率作为输入.

为什么斯莱恩的线性回归不要求迭代和学习率?它是设置了某个缺省值还是使用了其他方法?

推荐答案

LinearRegression()不使用梯度下降,这就是为什么它没有learning_rate参数.相反,它使用数学公式直接计算最佳系数.换句话说,它有一个封闭形式的解,所以不需要像梯度下降这样的迭代求解器.

梯度下降是一种更通用的方法,可以处理更复杂的问题.不过,您仍然可以使用它进行线性回归-check out SGDRegressor().

对于您概述的线性模型,LinearRegressionSGDRegressor(penalty=None)都会找到相同的最佳权重.不同的是,在how中,他们达到了这一目标.前者直接计算精确解,而后者沿着最陡峭的梯度区域逐步收敛于全局最优.

在某些情况下,您可能需要使用一个求解器而不是另一个求解器,例如,如果您的数据集太大,无法放入内存,则不能使用LinearRegression,因为它需要同时查看所有数据.SGDRegressor是可行的,因为梯度下降可以将数据分解成小批次,并一次迭代一个小批次的解.

Python相关问答推荐

使用scipy. optimate.least_squares()用可变数量的参数匹配两条曲线

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

运行总计基于多列pandas的分组和总和

Python库:可选地支持numpy类型,而不依赖于numpy

基于字符串匹配条件合并两个帧

我如何使法国在 map 中完全透明的代码?

joblib:无法从父目录的另一个子文件夹加载转储模型

启用/禁用shiny 的自动重新加载

使用Python和文件进行模糊输出

寻找Regex模式返回与我当前函数类似的结果

OpenCV轮廓.很难找到给定图像的所需轮廓

Cython无法识别Numpy类型

如果包含特定值,则筛选Groupby

递归函数修饰器

在Python中控制列表中的数据步长

.awk文件可以使用子进程执行吗?

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()

解析CSV文件以将详细信息添加到XML文件

迭代工具组合不会输出大于3的序列