1. 与简单线性回归区别(simple linear regression)
 
          多个自变量(x)
 
2. 多元回归模型
 
     y=β0+β1x1+β2x2+ ... +βpxp+ε
 
    其中:β0,β1,β2... βp是参数
 
                 ε是误差值
 
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:总运输时间
 | 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 = 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. 如果自变量中有分类型变量(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 | 
11. 关于误差的分布
 误差ε是一个随机变量,均值为0
 ε的方差对于所有的自变量来说相等
 所有ε的值是独立的
 ε满足正态分布,并且通过β0+β1x1+β2x2+ ... +βpxp反映y的期望值
 1. 例子 
   
一家快递公司送货:X1: 运输里程 X2: 运输次数 Y:总运输时间 
   
 
  
  
  
  
  
  
  
  自变量中存在分类问题的解决办法,对分类的自变量格式化
100,4,0,1,0,9.3
50,3,1,0,0,4.8
100,4,0,1,0,8.9
100,2,0,0,1,6.5
50,2,0,0,1,4.2
80,2,0,1,0,6.2
75,3,0,1,0,7.4
65,4,1,0,0,6
90,3,1,0,0,7.6
100,4,0,1,0,9.3
50,3,1,0,0,4.8
100,4,0,1,0,8.9
100,2,0,0,1,6.5
 一家快递公司送货: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 | 
目的,求出b0, b1,.... bp:
  y_hat=b0+b1x1+b2x2+ ... +bpxp 
 2. Python代码:
 from numpy import genfromtxt
import numpy as np
from sklearn import datasets, linear_modeldataPath = r"D:\MaiziEdu\DeepLearningBasics_MachineLearning\Datasets\Delivery.csv"
#载入数据
deliveryData = genfromtxt(dataPath, delimiter=',')
#打印数据
print "data"
print deliveryData
#分割自变量,因变量
X = deliveryData[:, :-1]
Y = deliveryData[:, -1]print "X:"
print X
print "Y: "
print Y
#定义回归模型
regr = linear_model.LinearRegression()
#训练模型
regr.fit(X, Y)print "coefficients"
#打印自变量系数 b1,b2,b3....
print regr.coef_
print "intercept: "
#打印截距 
print regr.intercept_xPred = [102, 6]
yPred = regr.predict(xPred)
print "predicted y: "
print yPred100,4,0,1,0,9.3
50,3,1,0,0,4.8
100,4,0,1,0,8.9
100,2,0,0,1,6.5
50,2,0,0,1,4.2
80,2,0,1,0,6.2
75,3,0,1,0,7.4
65,4,1,0,0,6
90,3,1,0,0,7.6
100,4,0,1,0,9.3
50,3,1,0,0,4.8
100,4,0,1,0,8.9
100,2,0,0,1,6.5
#!/usr/bin/env python
#-*-coding:utf-8-*-
#多元回归性曲线
from numpy import genfromtxt
import numpy as np
from sklearn import datasets,linear_modeldatePath=r'huigui1.csv'
deliveryData=genfromtxt(datePath,delimiter=',')print('data')
print(deliveryData)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_)
#估计值b1,b2;;
print('intercept:')
print(regr.intercept_)
#估计的截距b0;#预测y值
#xPred=[102,6]
#yPred=regr.predict(xPred)
#print('predicted y: ')
#print(yPred)结果解释:
data: 打印csv数据集
 X: 自变量集
 Y: 因变量集
 coefficients:  各个自变量的系数集
 intercept: 估计的截距