分享

机器学习教程 四-用scikit-learn求解多元线性回归问题

PeersLee 发表于 2016-6-29 23:41:57 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 12824
问题导读:

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






没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条