当前位置: 首页 > article >正文

机器学习——多元线性回归分析(multiple regression)及应用

1、多元回归分析与简单线性回归区别

多个自变量x

2、多元回归模型

其中,是参数,是误差值

3、多元回归方程

4、估计多元回归方程

一个样本被用来计算的点估计

5、估计流程(与简单线性回归类似)


6、估计方法

使sum of squares最小,运算与简单线性回归类似,涉及线性代数和矩阵代数的运算

7、举例

一家快递公司送货,X1:运输里程;X2:运输次数;Y:总运输时间


8、描述参数含义

平均每多送1英里,运输时间延长0.0611小时

平均每多一次运输,运输时间延长0.923小时

9、预测

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

10、如果自变量里面有分类型变量(categorical data),如何处理?

11、关于误差的分布

12、对第一个表格的数据,快递公司运输问题用Python进行代码实现

运输里程、运输次数、总运输时间按列的形式保存到文件TransportData.csv文件中,如下图:

Python3.5实现代码为:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiufrom  numpy import genfromtxt      #genfromtxt函数创建数组表格数据
import numpy as np
from sklearn import datasets,linear_model#读取数据,r后边内容当做完整的字符串,忽略里面的特殊字符
dataPath = r'F:\PythonCode\Regresssion\TransportData.csv'
transportData = genfromtxt(dataPath,delimiter=',')       #将路径下的文本文件导入并转化成numpy数组格式
print("transportData:",transportData)X = transportData[:,:-1]      #取所有行和除了最后一列的所有列作为特征向量
Y = transportData[:,-1]       #取所有行和最后一列作为回归的值
print("X:",X)
print("Y:",Y)#建立回归模型
regr = linear_model.LinearRegression()
regr.fit(X,Y)
print("coefficients:",regr.coef_)          #b1,...,bp(与x相结合的各个参数)
print("intercept:",regr.intercept_)        #b0(截面)x_pred = [102,6]
y_pred = regr.predict(x_pred)         #预测
print("y_pred:",y_pred)
运行结果:

transportData: [[ 100.     4.     9.3][  50.     3.     4.8][ 100.     4.     8.9][ 100.     2.     6.5][  50.     2.     4.2][  80.     2.     6.2][  75.     3.     7.4][  65.     4.     6. ][  90.     3.     7.6][  90.     2.     6.4]]
X: [[ 100.    4.][  50.    3.][ 100.    4.][ 100.    2.][  50.    2.][  80.    2.][  75.    3.][  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.4]
coefficients: [ 0.06231881  0.88000431]
intercept: -0.807517256255
y_pred: [ 10.82902718]
13、当自变量中有分类变量(如:车型)时,多元线性回归处理

将分类变量转化成0,1,2等数字来表示。0:小车,1:SUV,2:卡车,转码格式为:用一个3维数表示,所用车辆类型为1,其余车型为0.

运输里程、运输次数、运输车型、总运输时间按列的形式保存到文件TransportData2.csv文件中,转码格式如下图:

转码格式:(转化过程,不是最终存储内容

将转码后的数据保存在TransportData2.csv文件中


对前面的代码稍作修改即可:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu#多元线性回归处理自变量中有分类变量
from  numpy import genfromtxt      #genfromtxt函数创建数组表格数据
import numpy as np
from sklearn import datasets,linear_model#读取数据,r后边内容当做完整的字符串,忽略里面的特殊字符
dataPath = r'F:\PythonCode\Regresssion\TransportData2.csv'
transportData = genfromtxt(dataPath,delimiter=',')       #将路径下的文本文件导入并转化成numpy数组格式
print("transportData:",transportData)X = transportData[:,:-1]      #取所有行和除了最后一列的所有列作为特征向量
Y = transportData[:,-1]       #取所有行和最后一列作为回归的值
print("X:",X)
print("Y:",Y)#建立回归模型
regr = linear_model.LinearRegression()
regr.fit(X,Y)
print("coefficients:",regr.coef_)          #b1,...,b5(与x相结合的各个参数)
print("intercept:",regr.intercept_)        #b0(截面)x_pred = [102,6,0,0,1]
y_pred = regr.predict(x_pred)         #预测
print("y_pred:",y_pred)
运行结果:

transportData: [[ 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][  90.     2.     1.     0.     0.     6.4]]
X: [[ 100.    4.    0.    1.    0.][  50.    3.    1.    0.    0.][ 100.    4.    0.    1.    0.][ 100.    2.    0.    0.    1.][  50.    2.    0.    0.    1.][  80.    2.    0.    1.    0.][  75.    3.    0.    1.    0.][  65.    4.    1.    0.    0.][  90.    3.    1.    0.    0.][  90.    2.    1.    0.    0.]]
Y: [ 9.3  4.8  8.9  6.5  4.2  6.2  7.4  6.   7.6  6.4]
coefficients: [ 0.05545649  0.69545199 -0.1734737   0.57081602 -0.39734232]
intercept: 0.197201946472
y_pred: [ 9.62913307]

http://www.lryc.cn/news/2417079.html

相关文章:

  • C语言(五)---函数
  • Javascript的调试利器:Firebug使用详解
  • qtp11安装及入门
  • BOSS系统
  • VML概览
  • ironpython是什么意思_意思是“IronPython是Python编程语言的一种实现”
  • 连接池介绍
  • 【SD卡修复】使用SDFormatter工具
  • 莱顿弗罗斯特效应
  • 股指期权是什么?
  • Oracle 数据库新手指南(一) Oracle基础
  • clientHeight、offsetHeight、innerHeight、ouerHeight 区别
  • Python桌面应用开发GTK3 Glade GTK主题
  • 第一篇:nutz初步了解
  • DCOM揭秘
  • Debian安装全攻略
  • 本地安全策略
  • computed侦听的值可以在watch和methods中引用并赋值
  • 关于调试错误 Assertion Failed 问题
  • 彻底弄懂计算机中的大端小端
  • java.分页上一页下一页算法_一个方便的java分页算法
  • 颜色六位码和八位码表示
  • OPAC (Optical Properties of Aerosols and Clouds) v4.0编译及测试
  • 三层架构
  • JSTL(Java 标准标签库)
  • FPGA设计文档中常见的几个英文拼写错误
  • js中setTimeout和clearTimeout的使用
  • css教学 css基础
  • 开源自动化测试工具MeterSphere
  • 企业邮件系统管理(二)配置与优化指南