基于PCA的聚类及分类算法研究及分析(附python代码、完整文档和mnist-original.mat文件下载)

Mnist手写数据集由 60000 个训练样本和 10000 个测试样本组成,是在深度学习领域 中常用的数据库,每个样本都是一张 28 * 28 像素的灰度手写数字图片。使用 sklearn 函数库的 fetch_mldata()函数对 mnist 数据库进行加载,并完成以下内容:

(1)使用PCA算法对数据集进行降维(降维至2维),并可视化其降维后的特征分布。

(2)对降维后的数据,使用KMeans算法进行聚类,并可视化聚类结果以及聚类中心。

(3)使用PCA对数据集进行降维,并使用KNN算法对降维后的数据进行分类并考虑不同维度的降维特征对分类准确率的影响。

1PCA(主成分分析)

我们在作数据分析处理时,数据往往包含多个变量,而较多的变量会带来分析问题的复杂性。主成分分析(Principal components analysis,以下简称PCA)是一种通过降维技术把多个变量化为少数几个主成分的统计方法,是最重要的降维方法之一。它可以对高维数据进行降维减少预测变量的个数,同时经过降维除去噪声,其最直接的应用就是压缩数据,具体的应用有:信号处理中降噪,数据降维后可视化等。 
  PCA把原先的n个特征用数目更少的m个特征取代,新的m个特征一要保证最大化样本方差,二保证相互独立的。新特征是旧特征的线性组合,提供一个新的框架来解释结果。

本文使用PCA算法对数据集进行降维(降维至2维),并可视化其降维后的特征分布如图1-1所示。

图1-1 降维后的特征分布图

2KMeans算法

k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。

k-means算法中的k代表类簇个数,means代表类簇内数据对象的均值(这种均值是一种对类簇中心的描述),因此,k-means算法又称为k-均值算法。k-means算法是一种基于划分的聚类算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。 
  对降维后的数据,使用KMeans算法进行聚类,并可视化聚类结果以及聚类中心如图2-1所示。

图2-1 K-Means算法分类结果

3KNN算法

KNN(K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。

KNN算法的思想非常简单:对于任意n维输入向量,分别对应于特征空间中的一个点,输出为该特征向量所对应的类别标签或预测值。

KNN算法是一种非常特别的机器学习算法,因为它没有一般意义上的学习过程。它的工作原理是利用训练数据对特征向量空间进行划分,并将划分结果作为最终算法模型。存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。

输入没有标签的数据后,将这个没有标签的数据的每个特征与样本集中的数据对应的特征进行比较,然后提取样本中特征最相近的数据(最近邻)的分类标签。

一般而言,我们只选择样本数据集中前k个最相似的数据,这就是KNN算法中K的由来,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的类别,作为新数据的分类。

本文使用PCA对数据集进行降维,并使用KNN算法对降维后的数据进行分类并考虑不同维度的降维特征对分类准确率的影响结果如下图所示。

获取代码和文档请查看全文

未经允许不得转载!基于PCA的聚类及分类算法研究及分析(附python代码、完整文档和mnist-original.mat文件下载)