6、监督学习--回归--多元线性回归
1、什么是多元线性回归?
就是在简单线性回归基础上存在多个自变量x
2、多元线性回归
2.1 模型:y=β0+β1x1+β2x2+ ... +βpxp+ε
其中:β0,β1,β2... βp是参数,ε是误差值
2.2 方程:y_hat=b0+b1x1+b2x2+ ... +bpxp
一个样本被用来计算β0,β1,β2... βp的点估计b0, b1, b2,..., bp
2.3 估计流程 (与简单线性回归类似)
2.4 估计方法:min \sum (y_i - ŷ_i)^2,使sum of squares最小
2.5 关于误差分布
误差ε是一个随机变量,均值为0;ε的方差对于所有的自变量来说相等;所有ε的值是独立的;ε满足正态分布,并且通过β0+β1x1+β2x2+ ... +βpxp反映y的期望值。
3、示例计算
3.1 描述
一家快递公司送货:X1: 运输里程 X2: 运输次数 Y:总运输时间
Driving Assignment |
X1=Miles Traveled |
X2=Number of Deliveries |
Y= Travel Time (Hours) |
1 |
100 |
4 |
9.3 |
2 |
50 |
3 |
4.8 |
3 |
100 |
4 |
8.9 |
4 |
100 |
2 |
6.5 |
5 |
50 |
2 |
4.2 |
6 |
80 |
2 |
6.2 |
7 |
75 |
3 |
7.4 |
8 |
65 |
4 |
6.0 |
9 |
90 |
3 |
7.6 |
10 |
90 |
2 |
6.1 |
Time_hat = b0+ b1*Miles + b2 * Deliveries
Time_hat = -0.869 + 0.0611 Miles + 0.923 Deliveries
3.2 参数含义
b0: 平均每多运送一英里,运输时间延长0.0611 小时
b1: 平均每多一次运输,运输时间延长 0.923 小时
3.3 预测实验
如果一个运输任务是跑102英里,运输6次,预计多少小时?
Time_hat = -0.869 +0.0611 *102+ 0.923 * 6
= 10.9 (小时)
3.4 如果自变量中有分类型变量(categorical data) , 如何处理?
英里数 |
次数 |
车型 |
时间 |
100 |
4 |
1 |
9.3 |
50 |
3 |
0 |
4.8 |
100 |
4 |
1 |
8.9 |
100 |
2 |
2 |
6.5 |
50 |
2 |
2 |
4.2 |
80 |
2 |
1 |
6.2 |
75 |
3 |
1 |
7.4 |
65 |
4 |
0 |
6 |
90 |
3 |
0 |
7.6 |
将分类型变量转化为0-1类型的数值类型
比如车型0/1/2一列数据类型可以转化为3列(0/1/2),当某种车型被使用那么就标为1,否则为0,对应的b_车型也就转变为b_0、b_1、b_2
4、Python示例
from numpy import genfromtxt
import numpy as np
from sklearn import datasets, linear_model
dataPath = r"D:\Datasets\Delivery.csv"
# 转化为numpy可读格式,分隔符为,
deliveryData = genfromtxt(dataPath, delimiter=',')
print "data"
print deliveryData
# 自变量/特征值
# 第一个冒号表示所有行,:-1表示从第一列到最后一列(不包括最后一列)
X = deliveryData[:, :-1]
# 因变量/标签
Y = deliveryData[:, -1]
print "X:"
print X
print "Y: "
print Y
# 创建线路回归模型,并对训练集进行训练/建模
regr = linear_model.LinearRegression()
regr.fit(X, Y)
print "coefficients"
print regr.coef_
print "intercept: "
print regr.intercept_
xPred = [102, 6]
yPred = regr.predict(xPred)
print "predicted y: "
print yPred
PS:材料学习自麦子学院,如有雷同,纯属学习