我正在使用Scikit-learn库进行线性回归。一切都很简单直接。用6行代码就可以完成任务。然而,我想知道背后到底发生了什么。
由于我是机器学习的新手,我的提问可能不太正确,但我很好奇Scikit-learn在其线性回归方法中使用什么算法来最小化均方误差。
回答:
根据文档:
从实现的角度来看,这只是普通的最小二乘法(scipy.linalg.lstsq)包装为预测对象。
你也可以查看源代码这里,它调用了linalg.lstsq。
关于背后发生了什么的额外说明:
如果线性公式是a * x + b
,你可以通过训练模型的coef_
和intercept_
属性访问系数(a
)和偏置(b
)。
一个玩具示例,生成从3个点生成的单位对角线,以展示coef_
和intercept_
属性:
from sklearn.linear_model import LinearRegressionX = np.array([[1], [2], [3]])y = np.array([1, 2, 3])lg = LinearRegression()lg.fit(X, y)lg.coef_ # 1lg.intercept_ # ~ 0