今天介绍几种常用的特征提取和降维方法,例如:主成分分析PCA、核主成分分析KernelPCA、稀疏主成分分析SparsePCA、流形学习Isomap、t-SNE、多维尺度分析MDS等。下面将会以一个数据集为例对这些方法进行一一介绍,首先将酒数据集的每个特征进行数据标准化预处理,程序如下所示:
## 输出高清图像%config InlineBackend.figure_format = 'retina'%matplotlib inline## 图像显示中文的问题import matplotlibmatplotlib.rcParams['axes.unicode_minus']=Falseimport seaborn as snssns.set(font= "Kaiti",style="ticks",font_scale=1.4)## 导入会使用到的库import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom sklearn.decomposition import PCA, KernelPCA,SparsePCAfrom sklearn.manifold import Isomap, MDS, TSNEfrom sklearn.preprocessing import StandardScalerfrom sklearn.datasets import load_wine## 导入数据并对数据中的每个特征进行标准化wine_x,wine_y = load_wine(return_X_y=True)wine_x = StandardScaler().fit_transform(wine_x)print(wine_x.shape)(178, 13)
数据中一共有3类数据178个样本,每个样本使用13个特征表示。
1 主成分分析
主成分分析是采用一种数学降维的方法,在损失很少信息的前提下,找出几个综合变量作为主成分,来代替原来众多的变量,使这些主成分能够尽可能的代表原始数据的信息,其中每个主成分都是原始变量的线性组合,而且各个主成分之间不相关(即线性无关)。通过主成分分析,可以从事物错综复杂的关系中找到一些主要成分(通常选择累积贡献率≥85%的前m个主成分),从而能够有效利用大量统计数据进行定性分析,揭示变量之间的内在关系,得到一些对事物特征及其发展规律的深层次信息和启发,推动研究进一步的深入。通常情况下使用的主成分个数远小于原始特征个数据,所以可以起到特征提取和降维的目的。
针对前面准备好的数据集,可以使用下面的程序对其进行主成分分析,并保留从原始数据中提取前3个主成分特征,然后在三维空间中将数据的分布进行可视化,可视化程序如下所示。
## 使用主成分分析对酒数据集进行降维pca = PCA(n_components = 3,random_state = 123)pca.fit(wine_x)## 使用数据的前3个主成分pca_wine_x = pca.transform(wine_x)## 在3D空间中可视化主成分分析后的数据空间分布colors = ["red","blue"