四、用scikit-learn求解多元线性回归问题
来源:互联网 发布:mac版adobe flash cs6 编辑:程序博客网 时间:2024/06/03 19:34
一般情况下,一个因变量是和多个自变量有关的,比如一个商品的价格和原料价格、加工方法、上市时间、品牌价值等有关,也就是多元线性,本节介绍如何用scikit-learn解决多元线性回归问题
请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址
多元线性回归模型
方程: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内容如下:
from numpy.linalg import invfrom numpy import dot, transposeX = [[1,1,1],[1,1,2],[1,2,1]]y = [[6],[9],[8]]print dot(inv(dot(transpose(X),X)), dot(transpose(X),y))
请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址
执行结果为:
[[ 1.] [ 2.] [ 3.]]
这里面transpose是求转置,dot是求矩阵乘积,inv是求矩阵的逆
也可以用numpy的最小二乘函数直接计算出β
from numpy.linalg import lstsqprint lstsq(X, y)[0]
这里的lstsq就是least square最小二乘的意思
用scikit-learn求解多元线性回归
知道了原理,我们就直接尝试一下scikit-learn的线性模型回归吧
from sklearn.linear_model import LinearRegressionX = [[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
执行结果为:
[[ 22.]]
刚好y=1+2x1+3x2=1+2*3+3*5=22
0 0
- 四、用scikit-learn求解多元线性回归问题
- 机器学习精简教程之三——用scikit-learn求解多元线性回归问题
- 三、用scikit-learn求解一元线性回归问题
- scikit-learn : 线性回归,多元回归,多项式回归
- 机器学习精简教程之二——用scikit-learn求解一元线性回归问题
- 六、用scikit-learn求解多项式回归问题
- scikit-learn : 线性回归
- 多元线性回归系数求解
- 线性回归-scikit-learn
- 线性回归之scikit-learn
- scikit-learn线性回归源码
- 机器学习精简教程之五——用scikit-learn求解多项式回归问题
- 用scikit-learn和pandas学习线性回归
- 用scikit-learn和pandas学习线性回归
- 用 Scikit-Learn 和 Pandas 学习线性回归
- 用scikit-learn和pandas学习线性回归
- 【scikit-learn】scikit-learn的线性回归模型
- 【scikit-learn】scikit-learn的线性回归模型
- 数据结构颓废计划II-树状数组的推广与应用
- P1338 末日的传说
- JAVA源码分析Collection之ArrayList
- windons下安装gvim8.0支持python3.5
- Spring学习笔记-Spring Cache
- 四、用scikit-learn求解多元线性回归问题
- acpi 自动注册platform_device
- 五、用matplotlib绘制精美的图表
- 编程珠玑: 12章 取样问题 12.3设计空间,程序的输入包含两个整数m和n,其中m<n。输出是0~n-1范围内m个随机整数的有序列表,不允许重复。 -------解题总结
- Ubuntu下Qt5安装Qt designer
- 【t062】最厉害的机器人
- js自定义滚动条
- 单例析构那点事儿
- 关于http和rpc的区别(segmentfault上的回答)