使用Python创建LDA模型进行分类

线性判别式分析(Linear Discriminant Analysis)简称LDA,是模式识别的经典算法。

线性判别式分析(Linear Discriminant Analysis)简称LDA,是模式识别的经典算法。通过对历史数据进行投影,以保证投影后同一类别的数据尽量靠近,不同类别的数据尽量分开。并生成线性判别模型对新生成的数据进行分离和预测。本篇文章使用机器学习库scikit-learn建立LDA模型,并通过绘图展示LDA的分类结果。

使用Python创建LDA模型进行分类

准备工作

首先是开始前的准备工作,导入需要使用的库文件,本篇文章中除了常规的数值计算库numpy,科学计算库pandas,和绘图库matplotlib以外,还有绘图库中的颜色库,以及机器学习中的数据预处理和LDA库。

1

2

3

4

5

6

7

8

9

10

11

12

#导入数值计算库

import numpy as np

#导入科学计算库

import pandas as pd

#导入绘图库

import matplotlib.pyplot as plt

#导入绘图色彩库产生内置颜色

from matplotlib.colors import ListedColormap

#导入数据预处理库

from sklearn import preprocessing

#导入linear discriminant analysis库

from sklearn.lda import LDA

读取数据

读取并创建名称为data的数据表,后面我们将使用这个数据表创建LDA模型并绘图。

1

2

#读取数据并创建名为data的数据表

data=pd.DataFrame(pd.read_csv('LDA_data.csv'))

 

使用head函数查看数据表的前5行,这里可以看到数据表共有三个字段,分别为贷款金额loan_amnt,用户收入annual_inc和贷款状态loan_status。

1

2

#查看数据表的前5行

data.head()

使用Python创建LDA模型进行分类

设置模型特征X和目标Y

将数据表中的贷款金额和用户收入设置为模型特征X,将贷款状态设置为模型目标Y,也就是我们要分类的结果。

1

2

3

4

#设置贷款金额和用户收入为特征X

X = np.array(data[['loan_amnt','annual_inc']])

#设置贷款状态为目标Y

Y = np.array(data['loan_status'])

对特征进行标准化处理

贷款金额和用户收入间差异较大,属于两个不同量级的数据。因此需要对数据进行标准化处理,转化为无量纲的纯数值。

1

2

3

#特征数据进行标准化

scaler = preprocessing.StandardScaler().fit(X)

X_Standard=scaler.transform(X)

下面是经过标准化处理后的特征数据。

1

2

#查看标准化后的特征数据

X_Standard

使用Python创建LDA模型进行分类

1

2

#设置分类平滑度

h = .01

创建LDA模型并拟合数据

将标准化后的特征X和目标Y代入到LDA模型中。下面是具体的代码和计算结果。

1

2

3

#创建LDA模型

clf = LDA()

clf.fit(X_Standard,Y)

使用Python创建LDA模型进行分类

绘图数据预处理

对绘图数据进行预处理,计算X和Y的边界值,并使用meshgrid函数计算坐标向量矩阵。

1

2

3

#设置X和Y的边界值

x_min, x_max = X_Standard[, 0].min() - 1, X_Standard[, 0].max() + 1

y_min, y_max = X_Standard[, 1].min() - 1, X_Standard[, 1].max() + 1

1

2

3

#使用meshgrid函数返回X和Y两个坐标向量矩阵

xx, yy = np.meshgrid(np.arange(x_min, x_max,h), np.arange(y_min, y_max,h))

Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

设置图表所使用的颜色,这里使用的是HEX值。

1

2

#设置colormap颜色

cm_bright = ListedColormap(['#D9E021', '#0D8ECF'])

绘制LDA分类图表

首先绘制LDA分类图表的边界,这里使用之前计算的坐标矩阵,并设置的colormap颜色和透明度。

1

2

3

#绘制分类边界

Z = Z.reshape(xx.shape)

plt.pcolormesh(xx, yy, Z, cmap=cm_bright,alpha=0.6)

最后绘制LDA图表中的数据点,并设置colormap颜色以及图表标题。以下是具体代码和图表。

1

2

3

4

5

#绘制数据点

plt.scatter(X_Standard[, 0], X_Standard[, 1], c=Y, cmap=cm_bright)

plt.title('Linear Discriminant Analysis Classifiers')

plt.axis('tight')

plt.show()

使用Python创建LDA模型进行分类

本文为专栏文章,来自:蓝鲸,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/26914.html 。

(0)
蓝鲸的头像蓝鲸专栏
上一篇 2016-10-03
下一篇 2016-11-07

相关文章

  • 如何解决机器学习中的数据不平衡问题?

    作者:章华燕 在机器学习任务中,我们经常会遇到这种困扰: 数据不平衡问题。 数据不平衡问题主要存在于有监督机器学习任务中。当遇到不平衡数据时,以总体分类准确率为学习目标的传统分类算法会过多地关注多数类,从而使得少数类样本的分类性能下降。绝大多数常见的机器学习算法对于不平衡数据集都不能很好地工作。 本文介绍几种有效的解决数据不平衡情况下有效训练有监督算法的思路…

    2017-07-06
    0
  • QCon北京:构建大数据生态需要哪些核心技术?

    2016年QCon全球软件开发大会北京站于4.21-4.23在北京国际会议中心举办,参会者对整体内容设置及安排反馈良好。这里我们梳理出了22号“大数据生态构建”厂商共建专场的重点演讲内容,为没能到现场聆听的小伙伴们奉上饱满的干货内容。(进入QCon北京2016大会官网,免费下载三天的讲师演讲PPT。) 参与大数据技术实践分享的厂商有:通联数据、明略数据、Fr…

    2016-04-23
    0
  • 大数据说话:互联网行业职位虚高,工程人才短缺

    摘要:新浪、百度停社招,阿里缩校招,腾讯停招聘外包,这是互联网行业人才饱和?还是行业泡沫破裂的前兆?

    2015-11-07
    0
  • 你如何向一年级小学生解释人工智能?

    我们日常遇到的人工智能是把复杂问题进行分解成一个一个小模块,然后再逐一进行比较,识别。现实中的问题只不过是大量的人工智能算法相互叠加得到,是大量的逻辑叠加而来,就像计算机软件最本质是由0-1逻辑叠加而来一样。

    2019-07-25
    0
  • 10天100小时学数据科学,我推荐你这样学!

    10天100小时的学习时间里应该分配给尽量多样化的知识。这也算是一大笔投资,所以应当严肃对待,根据学出来的结果可以把拿到实习 offer 之类的当做目标。

    2016-07-17
    0
关注我们
关注我们
分享本页
返回顶部