今天我们开始进入机器学习模型的世界。首先是最简单,也最容易理解的线性模型。线性模型属于监督学习下的一类模型,所谓的监督学习是指,利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程。
在线性模型中,目标值被认为是特征值的线性组合。
其中,w = (w1, w2, ... , wp) 被叫做系数,使用coef_标识;w0 被叫做截距,使用intercept_标识。
线性模型要解决的问题,通俗来说,就是找到一条直线,能最好的代表图中所有的点。最理想的情况当然是,所有的点都在这条直线上——当然,这种情况在现实中几乎不会出现。我们只需要根据一定的标准,找到误差最小的直线即可。
有多种不同的模型适用于线性模型的场景,让我们一一来看。
普通最小平方(Ordinary Least Squares)
LinearRegression 用系数拟合线性模型
最小化数据集中观察到的目标与线性近似预测的目标之间的残差平方和。从数学上讲,它解决了以下形式的问题:
将数组X,目标值y传入LinearRegression 的fit 方法,LinearRegression 会计算出系数coef_和截距intercept_。
from sklearn import linear_model reg = linear_model.LinearRegression() reg.fit([ [0, 0], [1, 1], [2, 2] ], [0, 1, 2]) print(reg.coef_)print(reg.intercept_)
非负最小平方(Non-Negative Least Squares)
通过普通最小平方方法生成的系数可能为正,也可能为负;在很多现实的场景下,我们需要保证所有系数都是非负的。
我们只需要传入参数positive=True即可。
from sklearn import linear_model reg = linear_model.LinearRegression() reg.fit([ [0, 0], [1, -1], [2, 2] ], [0, 1, 2]) print(reg.coef_)print(reg.intercept_) non_negtive_reg = linear_model.LinearRegression(positive=True) non_negtive_reg.fit([ [0, 0], [1, -1], [2, 2] ], [0, 1, 2]) print(non_negtive_reg.coef_)print(non_negtive_reg.intercept_)
接下来我们还会介绍不同种类的线性模型,欢迎关注。
还没有评论,来说两句吧...