之前的PCA小白实战是利用numpy实现PCA过程,这里实现PCA和LDA实际调库应用在数据集的过程。
PCA(主成分分析)
最大方差理论:信号具有较大的方差,噪声具有较小的方差 PCA的目标:新坐标系上数据的方差越大越好 PCA是无监督的学习方法,直接食用skleran.decomposition即可
from sklearn.decomposition import PCA
pca = PCA(n_components='mle',whiten=False,svd_solver='auto')
pca.fit(iris_X)
reduced_X = pca.transform(iris_X) #reduced_X为降维后的数据
print('PCA:')
print ('降维后的各主成分的方差值占总方差值的比例',pca.explained_variance_ratio_)
print ('降维后的各主成分的方差值',pca.explained_variance_)
print ('降维后的特征数',pca.n_components_)
参数说明:
- n_components:指定希望PCA降维后的特征维度数目(>1), 指定主成分的方差和所占的最小比例阈值(0-1),'mle’用MLE算法根据特征的方差分布情况自己去选择一定数量的主成分特征来降维
- whiten: 判断是否进行白化。白化:降维后的数据的每个特征进行归一化,让方差都为1
- svd_solver:奇异值分解SVD的方法{‘auto’, ‘full’, ‘arpack’, ‘randomized’}
LDA(线性评价分析)
LDA基于费舍尔准则,即同一类样本尽可能聚合在一起,不同类样本应该尽量扩散;或者说,同雷洋被具有较好的聚合度,类别间具有较好的扩散度。 既然涉及到了类别,那么LDA肯定是一个有监督算法,其实LDA既可以做特征提取液可以做分类。 LDA具体的实现流程这里就不再赘述了,直接看skleran如何实现LDA。
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(n_components=2)
lda.fit(iris_X,iris_y)
reduced_X = lda.transform(iris_X) #reduced_X为降维后的数据
print('LDA:')
print ('LDA的数据中心点:',lda.means_) #中心点
print ('LDA做分类时的正确率:',lda.score(X_test, y_test)) #score是指分类的正确率
print ('LDA降维后特征空间的类中心:',lda.scalings_) #降维后特征空间的类中心
参数说明:
- n_components:指定希望PCA降维后的特征维度数目(>1)
- svd_solver:奇异值分解SVD的方法{‘auto’, ‘full’, ‘arpack’, ‘randomized’}
OK,模板以后可以直接用了。