一、使用主成分进行特征降维
对于给定的一组特征,在保留信息量的同时减少特征的数量。
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn import datasets
digits=datasets.load_digits()
features=StandardScaler().fit_transform(digits.data)
#创建可以保留99%信息量(用方差表示)的PCA
pca=PCA(n_components=0.99,whiten=True)
features_pca=pca.fit_transform(features)
print("Original number of features:",features.shape[1])
print("Reduced number of features:",features_pca.shape[1])
主成分分析法是一种最流行的线性降维方法。它的目标是用方差(Variance)来衡量数据的差异性,并将差异性较大的高维数据投影到低维空间中进行表示。绝大多数情况下,我们希望获得两个主成分因子:分别是从数据差异性最大和次大的方向提取出来的,称为PC1(Principal Component 1) 和 PC2(Principal Component 2)。
参数n_components有两种含义,由具体的参数值决定,如果值大于1,则n_components将会返回和这个值相同数量的特征,但这也带来一个问题,即如何选择最合适的特征数量。如果n_components的值在0和1之间,pca就会返回维持一定信息量(在算法中,用方差代表信息量)的最少特征数。通常情况下,n_components取值为0.95或0.99,意味着保留95%或99%的原始特征信息量。参数whiten=True,表示对每一个主成分都进行转换以保证它们的平均值为0、方差为1。另一个参数是svd_solver="randomized",代表使用随机方法找到第一个主成分(这种方法通常速度很快)
二、对线性不可分数据进行特征降维
使用Kernel PCA(核主成分分析,PCA的一种拓展)进行非线性降维。
一般来说,主成分分析(Principal Components Analysis, PCA)适用于数据的线性降维。而核主成分分析(Kernel PCA, KPCA)可实现数据的非线性降维,用于处理线性不可分的数据集