本节接上节继续分享线性回归中的多元线性回归分析问题,同时解决之前提出的第2、3个问题(详情见1.1)
2. 一家运输公司送货: X1: 运输里程 X2: 运输次数 Y:总运输时间
问:如果一个运输任务是跑102英里,运输6次,预计多少小时?
3.如果自变量中有分类型变量(categorical data) , 如何处理?
为了解决第二、三个问题,将从几个方面进行分享
1.多元线性回归
2.扩展部分
一、多元线性回归
1. 与简单线性回归区别(simple linear regression)
多个自变量(x)
2. 多元回归模型
y=β0+β1x1+β2x2+ ... +βpxp+ε
其中:β0,β1,β2... βp是参数
ε是误差值 ,除了X1,X2等其他的影响因素放在了这里
3. 多元回归方程
E(y)=β0+β1x1+β2x2+ ... +βpxp
4. 估计多元回归方程:
y_hat=b0+b1x1+b2x2+ ... +bpxp
(线变成了面)
一个样本被用来计算β0,β1,β2... βp的点估计b0,b1,b2,...,bp 5.估计流程 (与简单线性回归类似)
6. 估计方法
使sum of squares最小
(多元曲面上的值就是估计值)
运算与简单线性回归类似,涉及到线性代数和矩阵代数的运算
7.多元线性回归举例
一家运输公司送货: X1: 运输里程 X2: 运输次数 Y:总运输时间
Time =b0+ b1*Miles + b2 * Deliveries
Time = -0.869 + 0.0611 Miles + 0.923 Deliveries
8. 描述参数含义
b0:平均每多运送一英里,运输时间延长0.0611小时
b1:平均每多一次运输,运输时间延长 0.923小时
9. 预测
如果一个运输任务是跑102英里,运输6次,预计多少小时?
Time= -0.869 +0.0611 *102+ 0.923 * 6
=10.9 (小时)
10.python实现
# -*- encoding=utf-8 -*-
#
#把导入的数据转化为numpy形式
from numpy import genfromtxt
#使用numpy这个 包
import numpy as np
#使用sklearn这个机器学习的额库,datasets数据集,直接调用pyhton里面的回归分析
from sklearn import datasets, linear_model
#r之后认为是完整的字符串,忽略里面的字符串和特色的字符,对待后面的作为字符串
dataPath = r"D:\JavaProject\Mr.csv"
#文件名和分隔符
deliveryData = genfromtxt(dataPath, delimiter=',')
print "data"
print deliveryData
#X所有行,第一列到倒数第二列,y倒数第一列
X = deliveryData[:, :-1]
Y = deliveryData[:, -1]
print "X:"
print X
print "Y: "
print Y
#调用模型
regr = linear_model.LinearRegression()
#对模型进行具体建模
regr.fit(X, Y)
#coefficients表示模型中计算出的参数预测b1,b2
print "coefficients"
print regr.coef_
#intercept截距b0
print "intercept: "
print regr.intercept_
#传入x1,x2
xPred = [102, 6]
yPred = regr.predict([xPred])
print "predicted y: "
print yPred
二、 扩展部分
1.如果自变量中有分类型变量(categorical data), 如何处理?
将车型数据进行以下转化,然后进行多元线性回归
2.python实现
# -*- encoding=utf-8 -*-
#
#把导入的数据转化为numpy形式
from numpy import genfromtxt
#使用numpy这个 包
import numpy as np
#使用sklearn这个机器学习的额库,datasets数据集,直接调用pyhton里面的回归分析
from sklearn import datasets, linear_model
#r之后认为是完整的字符串,忽略里面的字符串和特色的字符,对待后面的作为字符串
dataPath = r"D:\JavaProject\Mr_dummy _done.csv"
#文件名和分隔符
deliveryData = genfromtxt(dataPath, delimiter=',')
print "data"
print deliveryData
#X所有行,第一列到倒数第二列,y倒数第一列
X = deliveryData[:, :-1]
Y = deliveryData[:, -1]
print "X:"
print X
print "Y: "
print Y
#调用模型
regr = linear_model.LinearRegression()
#对模型进行具体建模
regr.fit(X, Y)
#coefficients表示模型中计算出的参数预测b1,b2
print "coefficients"
print regr.coef_
#intercept截距b0
print "intercept: "
print regr.intercept_
领取专属 10元无门槛券
私享最新 技术干货