上一篇文章讲解了几种特征选择方法进行降维。本篇讲解特征抽取技术,将原始数据集变换到维度更低的特征子空间。
1、无监督数据降维---- 主成分分析PCA
主成分分析PCA是一种无监督线性转换技术,用于降低维度。常用于股票交易数据的探索性分析和信号去燥。在高维数据中找到最大方差方向,将数据集映射到新的低维子空间上,新空间的正交坐标轴为原数据集的方差最大方向。
from sklearn.decomposition import PCA
pca = PCA(n_components = 2)
X_train_pca = pca.fit_transform(X_train_std)
X_test_pca = pac.transform(X_test_std)
变换后的数据即可用于算法进行训练和验证。PCA构造函数的n_components参数指定转换后保留的特征数。如将n_components参数的值设置为None,则保留所有的主成分,可以通过explaind_variance_ratio_属性得到相应的方差贡献率;这时转换后得到的数据集为包含全部特征,但特征顺序按方差贡献率递减的属性进行排列。
from sklearn.decomposition import PCA
pca = PCA(n_components = None)
X_train_pca = pca.fit_transform(X_train_std)
pac.explained_variance_radio_
2、有监督数据降维----线性判别分析LDA
from sklearn.lda import LDA
lda = LDA(n_components = 2)
X_train_lda = lda.fit_transform(X_train_std, y_train)
X_test_lda = lda.transform(X_test.std)
变换后的数据即可用于算法进行训练和验证。
现实世界中更多情况处理的是非线性问题,用PCA、LDA将其降维成线性可分的并不是最优的。这时需要用核PCA方法将非线性可分的数据转换为线性可分的低维空间上。
from sklearn.decomposition import KernalPCA
kpca = KernalPCA(n_components = 2, kernal='rbf', grmma = 15)
X_kpca = kpca.fit_transform(X)
核PCA先将所有样本数据进行降维,降维后在随机拆分为训练数据集、测试数据集,标准化后进行训练、验证。
注意这三种降维算法类的构造函数都有一个n_components参数,一般将其值设置为小于原始数据集特征数量的值。但也可以设置为大于原始特征数据集特征数量的值,这时就不是降维了,而是向高维度映射。至于解决过拟合的效果,可通过实验验证。下一篇讲解模型评估和参数调优。