多元回归分析
一.理论
多元回归分析(multiple regression)
1.与简单线性回归区别:多个自变量
2.多元回归模型
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