目錄html
更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython
PCA在scikit-leran庫中的sklearn.decomposition
包下,PCA即最普通的PCA,PCA也有不少變種,咱們主要會講解PCA,而後聊一聊KernelPCA
、IncremetalPCA
、SparsePCA
、MiniBatchSparsePCA
。算法
接下來將會討論上述五者的區別,因爲是從官方文檔翻譯而來,翻譯會略有偏頗,有興趣的也能夠去scikit-learn官方文檔查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.decomposition數據結構
PCA是PCA系列降維算法中最原始的降維方法,由於原始,因此它通常是咱們首選的,若是感受原始的PCA可能沒法解決咱們的問題,咱們能夠嘗試使用其餘的PCA系列的降維算法。dom
import numpy as np from sklearn.decomposition import PCA X = np.array([[-1, -1, 2], [-2, -1, 1], [-3, -2, 3], [1, 1, 2], [2, 1, 2], [3, 2, 3]])
pca = PCA(n_components=2) pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None, svd_solver='auto', tol=0.0, whiten=False)
print(pca.explained_variance_ratio_)
[0.92991028 0.06363895]
print(pca.singular_values_)
[6.311193 1.65102037]
pca = PCA(n_components=2, svd_solver='full') pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None, svd_solver='full', tol=0.0, whiten=False)
print(pca.explained_variance_ratio_)
[0.92991028 0.06363895]
print(pca.singular_values_)
[6.311193 1.65102037]
pca = PCA(n_components=1, svd_solver='arpack') pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=1, random_state=None, svd_solver='arpack', tol=0.0, whiten=False)
print(pca.explained_variance_ratio_)
[0.92991028]
print(pca.singular_values_)
[6.311193]
KernelPCA
模型相似於非線性支持向量機,使用核技巧處理非線性數據的降維,主要是選擇合適的核函數。機器學習
IncrementalPCA
模型主要是爲了解決計算機內存限制問題。工業上樣本量和維度都是很是大的,若是直接擬合數據,機器性能通常都沒法支撐。IncrementalPCA
則會將數據分紅多個batch,而後對每一個batch依次遞增調用partial_fit函數對樣本降維。函數
SparsePCA
模型相較於普通的PCA
區別在於使用了L1正則化,即對非主成分的影響降爲0,避免了噪聲對降維的影響。性能
MiniBatchSparsePCA
模型相似於SparsePCA
,不一樣之處在於MiniBatchSparsePCA
模型經過使用一部分樣本特徵和給定的迭代次數進行降維,以此來解決特徵分解過慢的問題。學習