正在阅读:

Python机器学习多元线性回归模型

前言

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

多元回归模型

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

1.jpg

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

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

blob.png

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

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

blob.png

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

多元线性回归Python应用

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

1.jpg

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

blob.png

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

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


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方法来进行数据的读取,其读取到的结果如下:

blob.png

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


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

最终输出结果如下:

blob.png

补充

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

  • 多元回归模型:

blob.png

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

  • 多元回归方程:

blob.png

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

  • 估计多元回归方程:

blob.png

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

结束语

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

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌