PCA降維使用
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
iris=load_iris()
X=iris.data
y=iris.target
pca=PCA(n_components=2)
X_dc=pca.fit_transform(X)
看看降維后特征向量的信息量
pca.explained_variance_
查看降維后特征的信息量占原特征信息量的比例
pca.explained_variance_ratio_
pca.explained_variance_ratio_.sum()
用極大似然估計選取n_components,即降維后個數(shù)
pca_mle=PCA(n_components='mle')
X_mle=pca_mle.fit_transform(X)
pca_mle.explained_variance_ratio_.sum()
按信息量所占比例選取n_components
svd_solver=auto/full/arpack(特征矩陣為稀疏矩陣)/randomized(適合計算量大)
pca_full=PCA(n_components=0.99, svd_solver='full')
X_full=pca_full.fit_transform(X)
pca_full.explained_variance_ratio_.sum()
查看SVD矩陣分解中的特征向量矩陣
pca_full.components_
PCA 人臉應(yīng)用
from sklearn.datasets import fetch_lfw_people
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np
faces=fetch_lfw_people(min_faces_per_person=30)
faces.images.shape
X=faces.data
pca=PCA(150)
X_dc=pca.fit_transform(X)
#逆轉(zhuǎn)
X_inverse=pca.inverse_transform(X_dc)
plt.imshow(X[0,:].reshape(62,47), cmap='gray')
plt.show()
pca.explained_variance_ratio_.sum()