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:总运输时间
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.代码实现
10.1将数据录入到表格Delivery.csv
(没有录入表头)
10.2代码
from numpy import genfromtxt
from sklearn import linear_model
dataPath = r"Delivery.csv"
deliveryData = genfromtxt(dataPath,delimiter=',')
print("data")
print(deliveryData)
x= deliveryData[:,:-1]
y = deliveryData[:,-1]
print(x)
print(y)
lr = linear_model.LinearRegression()
lr.fit(x, y)
print(lr)
print("coefficients:")
print(lr.coef_)
print("intercept:")
print(lr.intercept_)
xPredict = [102,6]
yPredict = lr.predict(xPredict)
print("predict:")
print(yPredict)
11. 如果自变量中有分类型变量(categorical data) , 如何处理?
11.1数据录入到表格Delivery_Dummy.csv
这里车型的0,1,2只是一个标号,只是表示类型,所以将车型表示为一个3维向量(有3种车型)
11.2代码
from numpy import genfromtxt
from sklearn import linear_model
datapath=r"Delivery_Dummy.csv"
data = genfromtxt(datapath,delimiter=",")
x = data[1:,:-1]
y = data[1:,-1]
print(x)
print(y)
mlr = linear_model.LinearRegression()
mlr.fit(x, y)
print(mlr)
print("coef:")
print(mlr.coef_)
print("intercept")
print(mlr.intercept_)
xPredict = [90,2,0,0,1]
yPredict = mlr.predict(xPredict)
print("predict:")
print (yPredict)
【注】:本文为麦子学院机器学习课程的学习笔记