用scikit-learn做數(shù)據(jù)降維

主成分分析 PCA: principal component analysis

主成分分析是一種簡化數(shù)據(jù)集維數(shù)的技術(shù)。特點(diǎn)是保存數(shù)據(jù)集中對方差影響最大的那些特征。

在信息理論中,信號會有較大的方差,噪聲會有較小的方差。用我們自己的想法,在多維數(shù)據(jù)中選出最有代表性的一維一定是差別較大的一維。

具體的計算方法可以參考這篇文章:主成分分析(Principal components analysis)-最大方差解釋。

在 scikit-learn 這個工具下,進(jìn)行主成分分析用的是 PCA 類。Python代碼是:

from sklearn.decomposition import PCA

PCA有許多種方式,參考:sckikit-learn 上的 PCA 頁。

隨機(jī)映射 random projection

sklearn.random_projection 模塊實現(xiàn)了一種簡單和計算高效的方法,通過交易控制量的精度(作為附加方差),以縮短數(shù)據(jù)的維數(shù),從而縮短處理時間和縮小模型大小。 該模塊實現(xiàn)兩種類型的非結(jié)構(gòu)化隨機(jī)矩陣:高斯隨機(jī)矩陣和稀疏隨機(jī)矩陣。

隨機(jī)映射矩陣的維度和分布是被控制的,為了保證在數(shù)據(jù)集中任意兩個樣本的距離。隨機(jī)映射也是一種合適的基于距離的近似精確的方法。

Johnson-Lindenstrauss Lemma 定理保證了降維方法精度的上下限。johnson_lindenstrauss_min_dim 是找到一個數(shù)量能保證隨機(jī)降維到這個數(shù)量的矩陣。n_samples 是樣本的數(shù)量,eps 是由 J-L 定理定義的最大失真率。

>>> from sklearn.random_projection import johnson_lindenstrauss_min_dim
>>> johnson_lindenstrauss_min_dim(n_samples=1e6, eps=0.5)
663
>>> johnson_lindenstrauss_min_dim(n_samples=1e6, eps=[0.5, 0.1, 0.01])
array([    663,   11841, 1112658])
>>> johnson_lindenstrauss_min_dim(n_samples=[1e4, 1e5, 1e6], eps=0.1)
array([ 7894,  9868, 11841])
前后任意兩點(diǎn)$a,b$之間的距離有不等式保證
高斯隨機(jī)映射 Gaussian random projection

sklearn.random_projection.GaussianRandomProjection 通過將原始輸入空間投影在隨機(jī)生成的矩陣上來降低維度。代碼如下:

>>> import numpy as np
>>> from sklearn import random_projection
>>> X = np.random.rand(100, 10000)
>>> transformer = random_projection.GaussianRandomProjection()
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
稀疏隨機(jī)映射 Sparse random projection

相比于高斯隨機(jī)映射,稀疏隨機(jī)映射會更能保證降維的質(zhì)量,并帶來內(nèi)存的使用效率和運(yùn)算效率。

使用方法如下:

>>> import numpy as np
>>> from sklearn import random_projection
>>> X = np.random.rand(100,10000)
>>> transformer = random_projection.SparseRandomProjection()
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)
特征聚集 Feature agglomeration

把那些效果或行為相似的特征起來,達(dá)到降維的目的。
利用的是下面的類:

sklearn.cluster.FeatureAgglomeration

由于例子過于復(fù)雜,把本方法的使用說明使用說明貼上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容