首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

1.1线性回归分析建模-多元线性回归分析

本节接上节继续分享线性回归中的多元线性回归分析问题,同时解决之前提出的第2、3个问题(详情见1.1)

2. 一家运输公司送货: X1: 运输里程 X2: 运输次数 Y:总运输时间

问:如果一个运输任务是跑102英里,运输6次,预计多少小时?

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

为了解决第二、三个问题,将从几个方面进行分享

1.多元线性回归

2.扩展部分

一、多元线性回归

1. 与简单线性回归区别(simple linear regression)

多个自变量(x)

2. 多元回归模型

y=β0+β1x1+β2x2+ ... +βpxp+ε

其中:β0,β1,β2... βp是参数

ε是误差值 ,除了X1,X2等其他的影响因素放在了这里

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.python实现

# -*- encoding=utf-8 -*-

#

#把导入的数据转化为numpy形式

from numpy import genfromtxt

#使用numpy这个 包

import numpy as np

#使用sklearn这个机器学习的额库,datasets数据集,直接调用pyhton里面的回归分析

from sklearn import datasets, linear_model

#r之后认为是完整的字符串,忽略里面的字符串和特色的字符,对待后面的作为字符串

dataPath = r"D:\JavaProject\Mr.csv"

#文件名和分隔符

deliveryData = genfromtxt(dataPath, delimiter=',')

print "data"

print deliveryData

#X所有行,第一列到倒数第二列,y倒数第一列

X = deliveryData[:, :-1]

Y = deliveryData[:, -1]

print "X:"

print X

print "Y: "

print Y

#调用模型

regr = linear_model.LinearRegression()

#对模型进行具体建模

regr.fit(X, Y)

#coefficients表示模型中计算出的参数预测b1,b2

print "coefficients"

print regr.coef_

#intercept截距b0

print "intercept: "

print regr.intercept_

#传入x1,x2

xPred = [102, 6]

yPred = regr.predict([xPred])

print "predicted y: "

print yPred

二、 扩展部分

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

将车型数据进行以下转化,然后进行多元线性回归

2.python实现

# -*- encoding=utf-8 -*-

#

#把导入的数据转化为numpy形式

from numpy import genfromtxt

#使用numpy这个 包

import numpy as np

#使用sklearn这个机器学习的额库,datasets数据集,直接调用pyhton里面的回归分析

from sklearn import datasets, linear_model

#r之后认为是完整的字符串,忽略里面的字符串和特色的字符,对待后面的作为字符串

dataPath = r"D:\JavaProject\Mr_dummy _done.csv"

#文件名和分隔符

deliveryData = genfromtxt(dataPath, delimiter=',')

print "data"

print deliveryData

#X所有行,第一列到倒数第二列,y倒数第一列

X = deliveryData[:, :-1]

Y = deliveryData[:, -1]

print "X:"

print X

print "Y: "

print Y

#调用模型

regr = linear_model.LinearRegression()

#对模型进行具体建模

regr.fit(X, Y)

#coefficients表示模型中计算出的参数预测b1,b2

print "coefficients"

print regr.coef_

#intercept截距b0

print "intercept: "

print regr.intercept_

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180316G1J8D500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券