前言

在上一篇文章《机器学习简单线性回归模型》中我们讲解分析了Python机器学习中单输入的线性回归模型,但是在实际生活中,我们遇到的问题都是多个条件决定的问题,在机器学习中我们称之为多元或多输入的问题,在性回归分析中,通常也都是多输入的问题。下面我们就来简单的分析一下多元情况下的线性回归分析问题。

多元回归模型

我门首先看一个运输公司的运输时间的数据实例:

上表中的数据是运输公司的运输时间和运送英里数、次数、车型的关系数据,从这个数据中我们可以知道,影响时间的因素有3个,并且其关系呈现出基本的线性关系,这就是典型的多元线性问题。细心的同学可能可以看出来,在这数据中,英里数、次数和车型相比其类型有点差异,英里数和次数都是一个有大小的数字,其大小直接影响时间,但是车型不是一个有数值的特征值,车型是以类别来分的,其数值只是其车型的代表数字而已,是不能直接拿来用的,所以我们后面会将,将类别的数据归一化,转换为可用的数据。

很明显与简单的单输入模型想比,其区别在于输入的个数是单个还是多个。我们首先看一下单输入的时候的回归方程:y = ax + b ,我们的方程中只有a和b两个参数,自变量只有x一个,因变量只有y一个,我们从这个方程中来推导一下元回归方程应该是什么样的呢?假设现在有n个输入,那么也就是有多个自变量x,我们可以记为x1、x2、x3.......,那么从上式中可以推导出,其参数肯定也不止a和b两个,每个x的旁边都乘上了一个参数a,所以我们多元回归方程如下:

这里的a和b都便是我们训练模型得到的最佳参数值。

同样,我们的参数也可以像简单的单输入的回归方程一样来确定,也是通过最小二乘法,不过此时的运算将上述到多维空间,设计到线性代数和矩阵运算,还是比较复杂的,公式我们这里就不做推导了,其推导流程跟单输入的类似,我们可以将参数a和x放在向量矩阵中,使用最小二乘法的推导方式来得出。最小二乘法的理论推导在上一篇文章中已经给出了,不明白的同学可以再去看一下。其基本结论如下:

上式中的X'是军阵X的转置,-1代表逆矩阵。

多元线性回归Python应用

下面我们使用上面的运输公司的例子来讲一下在Python中我们如何来对多元线性进行建模预测,其实在sklearn中已经为我们封装好了这么一个类,我们直接调用就可以了。下面看我们的例子

首先呢,我们前面说过,车型是类别,不是数值,我们需要进行数据处理,其处理方式便是将车型归一化,比如这里的0,我们将化为100,这里的1我们化为010,这里的2我们化为001,最终处理过的数据如下:

因为数据比较少,所以这里我们是手工修改的,若数据量比较大的话可以在Python中调用函数来进行数据的预处理,前面的文章中也有实例,这里就不多说了。我们将这个文件保存为csv,在Python中使用该数据集来进行建模。

首先我们来进行数据的读取:

#coding:utf8

from numpy import genfromtxt

import numpy as np

from sklearn import datasets, linear_model

#读取数据

path = r"./data/data-line.csv";

#delimiter是分隔符,因为是csv是使用,进行分割的,skip_header是从第几行开始读

data = genfromtxt(path, delimiter=',', skip_header=1)

print "data:\n", data

1

2

3

4

5

6

7

8

9

10

11

#coding:utf8

from numpy import genfromtxt

import numpy as np

from sklearn import datasets, linear_model

#读取数据

path = r"./data/data-line.csv";

#delimiter是分隔符,因为是csv是使用,进行分割的,skip_header是从第几行开始读

data = genfromtxt(path, delimiter=',', skip_header=1)

print "data:\n", data

我么使用了numpy中的genfromtext方法来进行数据的读取,其读取到的结果如下:

读取到了数据之后我们就将数据分为特征值X和标记,然后使用sklearn中的linear_model来进行建模:

#进行建模

regr = linear_model.LinearRegression()

regr.fit(X, Y)

print "x的系数值a:"

print regr.coef_

print "截距b: "

print regr.intercept_

#进行预测

xPred = [102, 6, 0, 1, 0]

yPred = regr.predict(xPred)

print "预测结果: "

print yPred

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#进行建模

regr = linear_model.LinearRegression()

regr.fit(X, Y)

print "x的系数值a:"

print regr.coef_

print "截距b: "

print regr.intercept_

#进行预测

xPred = [102, 6, 0, 1, 0]

yPred = regr.predict(xPred)

print "预测结果: "

print yPred

最终输出结果如下:

补充

在前面介绍的时候其实有几个概念没有讲下面补充说一下,在回归问题中,有三概念方程:

多元回归模型:

其中ε是误差其为正太分布形式。

多元回归方程:

该方程即为多元回归模型的均值,其误差均值为0

估计多元回归方程:

该方程便是我们通过训练得出来的线性回归方程。

结束语

本文中的例子比较简单,数据比较少,只是一个简单的训练预测实例,并没有牵扯到误差分析和模型的评估,在下一篇文章中我们将使用大量数据的数据集,构造线性回归模型,并且讲解在线性的情况下,如何评估模型,以及评估的法。

python多元线性回归实例_Python机器学习多元线性回归模型 | kTWO-个人博客相关推荐

  1. python自动输入账号密码_Python如何基于selenium实现自动登录博客园

    这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备: 本文章是使用 ...

  2. python线性回归实例_Python机器学习线性回归分析实例 | kTWO-个人博客

    前言 在前面的文章中,我们都是简单的对线性回归模型进行构建,这篇文章我们采用网上下载的数据量比较大的数据来对模型进行构造,最后讲述在线性的情况下如何对模型进行评估. 数据集介绍 下图是该数据集的前10 ...

  3. python图像压缩主成分分析实例_python机器学习API介绍13: 数据降维及主成分分析...

    数据降维概述:数据降维是机器学习领域中重要的内容,所谓的降维就是采用某种映射方法,将高维空间中的数据点映射到低维的空间中.其本质是学习一个映射函数f: x->y.其中x是原始数据点的表述,目前多 ...

  4. python异常值处理实例_Python机器学习:异常值查找和处理

    再一次的通过写文章的方式强化记忆,本文内容均来源于以上文章.先说如何处理检测到的异常值? 有些算法对异常值很敏感,如逻辑回归算法.如果不处理,用该算法拟合出来的模型的效果.精确度会很低.有些算法对异常 ...

  5. python抓取图片数字_Python提取数字图片特征向量 | kTWO-个人博客

    引言 在机器学习中有一种学习叫做手写数字识别,其主要功能就是让机器识别出图片中的数字,其步骤主要包括:图片特征提取.将特征值点阵转化为特征向量.进行模型训练.第一步便是提取图片中的特征提取.数据的预处 ...

  6. python socket模块作用_python之socket模块详解--小白博客

    主要是创建一个服务端,在创建服务端的时候,主要步骤如下: 创建socket对象socket-->绑定IP地址和端口bind-->监听listen-->得到请求accept--> ...

  7. 【机器学习】<刘建平Pinard老师博客学习记录>线性回归原理

    目录 一.线性回归的模型函数和损失函数: 二.线性回归的算法: 1.梯度下降法: 2.最小二乘法: 三.线性回归的推广:多项式回归 四.线性回归的推广:广义线性回归 五.线性回归的正则化: 一.线性回 ...

  8. 【机器学习】<刘建平Pinard老师博客学习记录>Scikit-learnPandas(NumpyMatplotlib)学习线性回归

    目录 一.数据获取&问题定义: 1.数据获取: 2.问题定义: 二.整理数据: 三.使用Pandas读取数据: 1.导入依赖库: 2.使用Pandas读取函数: 四.数据准备: 1.查看数据: ...

  9. android sdk工具之MonkeyRunner (实例)_小兵兵同学_新浪博客

    android sdk工具之MonkeyRunner (实例)_小兵兵同学_新浪博客

最新文章

  1. 【Java】身份证号码验证
  2. 排序算法 时间复杂度+空间复杂度 总结
  3. 【免费获取】80+页PPT全方位解读半导体行业
  4. Docker常用操作命令(二)
  5. [原]变参函数原理详解
  6. python对非it上班族有用吗_非专业人士学Python有用吗?
  7. 基于flask的网页聊天室(四)
  8. 【报告分享】2020年中国知识图谱行业研究报告.pdf(附下载链接)
  9. bzoj 4237: 稻草人(CDQ分治+单调栈+二分)
  10. 证件照制作微信小程序源码
  11. H83601D直插DIP千兆双口网络接口隔离滤波脉冲变压器
  12. pytest执行时,报report.html错误
  13. android 大众点评,Android 大众点评的接入
  14. excel小写转大写公式_英文字母大小写的转换
  15. word页眉页脚页码设置详解
  16. delphi 各新版本特性收集
  17. nfc和红外线的区别_比较NFC支付、蓝牙支付、红外线支付技术的优缺点
  18. Axure的基本原件
  19. switch好玩吗_Switch游戏没那么少!我今天就推荐几个好玩的
  20. 【从零学习openCV】IOS7下的人脸检测

热门文章

  1. laravel中实现短信发送验证码
  2. c语言文书源码,[应用文书]c 计算机编码.doc
  3. 零基础转行IT,是学Java、C++、Linux和Web前端哪个好?
  4. POI读取excel。读取MultipartFile格式的excel文件
  5. 如何在ubuntu打开文件
  6. 小程序原始登录和云开发微信登录的区别
  7. TabLayout的自定义实现选项卡背景的滑动动画
  8. java常用类(Math数学类)
  9. 学习之路--Qing和vlan-mapping
  10. 数字博物馆是什么意思?数字博物馆用到了哪些技术?