多元回归分析

一.理论

 多元回归分析(multiple regression)

1.与简单线性回归区别:
多个自变量
2.多元回归模型

多元回归分析

3.多元回归方程

多元回归分析

4.估计多元回归方程

多元回归分析

5.估计流程(与简单线性回归类似)
6.估计方法

使得min的值达到最小

多元回归分析

7.如果自变量有分类型变量(categorical data),如何处理?

1)原始数据

多元回归分析

2)处理后数据

多元回归分析

3)总结:

将类别型数据:0、1、2三类分别按照三列按照布尔逻辑进行处理;

8.误差分布:
1)随机变量,期望为0
2)对所有的自变量来说都相等
3)独立的

4)正态分布

二.实践

1.多元回归简单

1)数据(E:\MachineLearning-data\Delivery.csv)

多元回归分析

说明:三列分别代表:里程数,出车次数,所用时间

2)代码

# -*- coding: utf-8 -*-
from numpy import genfromtxt#将读入数据转换为numpy的数组形式
import numpy as np
from sklearn import datasets,linear_model

#读入数据
dataPath = r"E:\MachineLearning-data\Delivery.csv"#加r表示完整字符串,忽略特殊字符
deliverData = genfromtxt(dataPath,delimiter=",")#读入文本,使用,分割

print("data")
print(deliverData)
#对数据进行预处理
X = deliverData[:,:-1]
Y = deliverData[:,-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_)#输出截距
#给定数据进行预测
xPredict = [102,6]
yPredict = regr.predict(xPredict)
print("yPredict")
print(yPredict)

3)结果及分析

data
[[ 100.     4.     9.3]
 [  50.     3.     4.8]
 [ 100.     4.     8.9]
 ..., 
 [  65.     4.     6. ]
 [  90.     3.     7.6]
 [  90.     2.     6.1]]
X
[[ 100.    4.]
 [  50.    3.]
 [ 100.    4.]
 ..., 
 [  65.    4.]
 [  90.    3.]
 [  90.    2.]]
Y
[ 9.3  4.8  8.9  6.5  4.2  6.2  7.4  6.   7.6  6.1]
coefficients
[ 0.0611346   0.92342537]
intercept
-0.868701466782
yPredict
[ 10.90757981]

说明:分别输出数据处理后的X、Y值,得出自变量参数分别:0.0611346  ,0.92342537

截距为:0.868701466782

当给定X为:[102,6]

Y预测值为:10.90757981

2.自变量中有类别的多元回归处理

1)数据(E:\MachineLearning-data\DeliveryDummyDone.csv)

多元回归分析

2)代码(类似与1中的代码,只是数据路径和预测参数传入进行修改)

# -*- coding: utf-8 -*-

# -*- coding: utf-8 -*-
from numpy import genfromtxt#将读入数据转换为numpy的数组形式
import numpy as np
from sklearn import datasets,linear_model

#读入数据
dataPath = r"E:\MachineLearning-data\DeliveryDummyDone.csv"#加r表示完整字符串,忽略特殊字符
deliverData = genfromtxt(dataPath,delimiter=",")#读入文本,使用,分割

print("data")
print(deliverData)
#对数据进行预处理
X = deliverData[:,:-1]
Y = deliverData[:,-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_)#输出截距
#给定数据进行预测
xPredict = [102,6,0,1,0]
yPredict = regr.predict(xPredict)
print("yPredict")
print(yPredict)

3)结果及分析

data
[[ 100.     4.     0.     1.     0.     9.3]
 [  50.     3.     1.     0.     0.     4.8]
 [ 100.     4.     0.     1.     0.     8.9]
 ..., 
 [  50.     3.     1.     0.     0.     4.8]
 [ 100.     4.     0.     1.     0.     8.9]
 [ 100.     2.     0.     0.     1.     6.5]]
X
[[ 100.    4.    0.    1.    0.]
 [  50.    3.    1.    0.    0.]
 [ 100.    4.    0.    1.    0.]
 ..., 
 [  50.    3.    1.    0.    0.]
 [ 100.    4.    0.    1.    0.]
 [ 100.    2.    0.    0.    1.]]
Y
[ 9.3  4.8  8.9 ...,  4.8  8.9  6.5]
coefficients
[ 0.05452507  0.70930079 -0.18019642  0.60821607 -0.42801964]
intercept
0.198995895632
yPredict
[ 10.62457344]

说明:coefficients输出为5个自变量的参数值

intercept为截距

在给定X为:[102,6,0,1,0]

Y预测值为:10.62457344