问题导读:
1.多元线性回归模型是什么?
2.如何用使用scikit-learn求解多元线性回归?
解决方案:
上一篇:机器学习教程 三-用scikit-learn求解一元线性回归问题
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19020
(出处: about云开发)
多元线性回归模型
方程:Y=Xβ
求解多元线性回归问题就是求解β:
因为X不一定是方阵,所以不能直接β=X-1Y
两边同时乘以Xt,得到XtY=XtXβ
因为XtX是方阵,它的逆是(XtX)-1,所以两边同时乘(XtX)-1得到
(XtX)-1XtY=β
根据这个公式,我们自己设计一个例子,验证一下
设计二元一次方程:y=1+2x1+3x2
取样本为(1,1,1),(1,1,2),(1,2,1),计算得y=(6,9,8)
注意:这里面常数项1相当于1*x0,只不过这里的x0永远取1
所以我们的
X = [[1,1,1],[1,1,2],[1,2,1]]
y = [[6],[9],[8]]
创建scikit_learn_multvariable_linear_model_demo.py内容如下:
[mw_shl_code=python,true]from numpy.linalg import inv
from numpy import dot, transpose
X = [[1,1,1],[1,1,2],[1,2,1]]
y = [[6],[9],[8]]
print dot(inv(dot(transpose(X),X)), dot(transpose(X),y))[/mw_shl_code]
执行结果为:
[mw_shl_code=applescript,true][[ 1.]
[ 2.]
[ 3.]][/mw_shl_code]
这里面transpose是求转置,dot是求矩阵乘积,inv是求矩阵的逆
也可以用numpy的最小二乘函数直接计算出β
[mw_shl_code=python,true]from numpy.linalg import lstsq
print lstsq(X, y)[0][/mw_shl_code]
这里的lstsq就是least square最小二乘的意思
用scikit-learn求解多元线性回归
知道了原理,我们就直接尝试一下scikit-learn的线性模型回归吧
[mw_shl_code=python,true]from sklearn.linear_model import LinearRegression
X = [[1,1,1],[1,1,2],[1,2,1]]
y = [[6],[9],[8]]
model = LinearRegression()
model.fit(X, y)
x2 = [[1,3,5]]
y2 = model.predict(x2)
print y2[/mw_shl_code]
执行结果为:
[mw_shl_code=applescript,true][[ 22.]][/mw_shl_code]
相关文章
机器学习教程 一-不懂这些线性代数知识 别说你是搞机器学习的
http://www.aboutyun.com/forum.php?mod=viewthread&tid=18997
机器学习教程 二-安装octave绘制3D函数图像
http://www.aboutyun.com/thread-19006-1-1.html
机器学习教程 三-用scikit-learn求解一元线性回归问题
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19020
机器学习教程 四-用scikit-learn求解多元线性回归问题
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19042
机器学习教程 五-用matplotlib绘制精美的图表
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19060
机器学习教程 六-用scikit-learn求解多项式回归问题
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19073
机器学习教程 七-用随机梯度下降法(SGD)做线性拟合
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19086
机器学习教程 八-用scikit-learn做特征提取
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19095
机器学习教程 九-二元分类效果的评估方法
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19107
机器学习教程十-用scikit-learn的网格搜索快速找到最优模型参数
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19120
机器学习教程 十一-用scikit-learn做聚类分析大数据
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19129
机器学习教程 十二-神经网络模型的原理 大数据
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19339
|
|