0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PCA類在降維和數(shù)據(jù)重構(gòu)的簡(jiǎn)單用法

lviY_AI_shequ ? 來源:lp ? 2019-04-17 09:57 ? 次閱讀

前言

前兩篇文章介紹了PCA(主成分分析方法)和SVD(奇異值分解)的算法原理,本文基于scikit learn包介紹了PCA算法在降維和數(shù)據(jù)重構(gòu)的應(yīng)用,并分析了PCA類與sparsePCA類的區(qū)別。由于PCA算法的特征值分解是奇異值分解SVD的一個(gè)特例,因此sklearn工具的PCA庫(kù)是基于SVD實(shí)現(xiàn)的。

本文內(nèi)容代碼鏈接:

https://github.com/zhangleiszu/machineLearning/tree/master/PCA

目錄

1. PCA類介紹

2. sklearn.decomposition.PCA的參數(shù)說明

3. sklearn.decomposition.MiniBatchSparsePCA的參數(shù)說明

4. PCA類在降維的應(yīng)用

5. PCA類與MiniBatchSparsePCA類的區(qū)別

6. PCA在數(shù)據(jù)重構(gòu)的應(yīng)用

7. 總結(jié)

1. PCA類介紹

所有PCA類都在sklearn.decompostion包中,主要有以下幾類:

1) sklearn.decompostion.PCA:實(shí)際項(xiàng)目中用的最多的PCA類;

2) sklearn.decompostion.IncrementPCA:PCA最大的缺點(diǎn)是只支持批處理,也就是說所有數(shù)據(jù)都必須在主內(nèi)存空間計(jì)算,IncrementalPCA使用多個(gè)batch,然后依次調(diào)用partial_fit函數(shù),降維結(jié)果與PCA類基本一致 。

3) sklearn.decomposition.SparsePCA和sklearn.decomposition.MiniBatchSparsePCA:SparsePCA類和MiniBatchSparsePCA類算法原理一樣,都是把降維問題用轉(zhuǎn)換為回歸問題,并在優(yōu)化參數(shù)時(shí)增加了正則化項(xiàng)(L1懲罰項(xiàng)),不同點(diǎn)是MiniBatchSparsePCA使用部分樣本特征并迭代設(shè)置的次數(shù)進(jìn)行PCA降維 。

4) sklearn.decomposition.KernelPCA:對(duì)于線性不可分的特征,我們需要對(duì)特征進(jìn)行核函數(shù)映射為高維空間,然后進(jìn)行PCA降維 。流程圖如下:

2. sklearn.decomposition.PCA類的參數(shù)說明

1) n_components:取值為:整形,浮點(diǎn)型,None或字符串。

n_components為空時(shí),取樣本數(shù)和特征數(shù)的最小值:

n_components == min(n_samples , n_features)

0 < n_components < 1時(shí),選擇主成分的方差和占總方差和的最小比例閾值,PCA類自動(dòng)計(jì)算降維? ? ?后的維數(shù)。

n_components是大于等于1的整數(shù),設(shè)置降維后的維數(shù) 。

n_components是字符串'mle',PCA類自動(dòng)計(jì)算降維后的維數(shù) 。

2) copy:布爾型變量 。表示在運(yùn)行時(shí)是否改變訓(xùn)練數(shù)據(jù),若為True,不改變訓(xùn)練數(shù)據(jù)的值,運(yùn)算結(jié)果寫在復(fù)制的訓(xùn)練數(shù)據(jù)上;若為False,則覆蓋訓(xùn)練數(shù)據(jù) ,默認(rèn)值為True。

3) whiten:布爾型變量 。若為True,表示對(duì)降維后的變量進(jìn)行歸一化;若為False,則不進(jìn)行歸一化 ,默認(rèn)值為False。

4) svd_solver:字符串變量,取值為:'auto','full','arpack','randomized'

randomized:如果訓(xùn)練數(shù)據(jù)大于500×500,降維后的維數(shù)小于數(shù)據(jù)的最小維數(shù)0.8倍,采用加快SVD的隨機(jī)算法 。

full:傳統(tǒng)意義上的SVD算法,調(diào)用scipy.linalg.svd類。

arpack:調(diào)用scipy.sparse.linalg.svds類,降維后的維數(shù)符合:

0 < n_components < min(X.shape)

auto:自動(dòng)選擇最適合的SVD算法。

類成員屬性:

components_:主成分分量的向量空間 。

explained_variance_:向量空間對(duì)應(yīng)的方差值 。

explained_variance_ratio_:向量空間的方差值占總方差值的百分比 。

singular_values:向量空間對(duì)應(yīng)的奇異值 。

3.sklearn.decomposition.MiniBatchSparsePCA的參數(shù)說明

本節(jié)就介紹兩個(gè)常用的重要變量,用法與PCA類基本相同。

n_components:降維后的維數(shù)

alpha:正則化參數(shù),值越高,主成分分量越稀疏(分量包含0的個(gè)數(shù)越多)。

4. PCA類在降維的應(yīng)用

Iris數(shù)據(jù)集包含了三種花(Setosa,Versicolour和Virginica),特征個(gè)數(shù)為4。

下載Iris數(shù)據(jù)集:

iris = datasets.load_iris()X = iris.datay = iris.target

設(shè)置降維后的維數(shù)為2:

pca = PCA(n_components=2)

降維后的數(shù)據(jù)集:

X_r = pca.fit(X).transform(X)

降維后的特征分布圖:

5. PCA類與MiniBatchSparsePCA類的區(qū)別

PCA類主成分分量是非零系數(shù)構(gòu)成的,導(dǎo)致了PCA降維的解釋性很差,若主成分分量包含了很多零系數(shù),那么主成分分量可以將很多非主要成分的影響降維0,不僅增強(qiáng)了降維的解釋性,也降低了噪聲的影響 ,缺點(diǎn)是可能丟失了訓(xùn)練數(shù)據(jù)的重要信息。MiniBatchSparsePCA與PCA類的區(qū)別是使用了L1正則化項(xiàng),導(dǎo)致了產(chǎn)生的主成分分量包含了多個(gè)0,L1正則化系數(shù)越大,0的個(gè)數(shù)越多,公式如下:

用圖來說明區(qū)別:

左圖是PCA類的主成分分量空間,右圖是MiniBatchSparsePCA類的主成分分量空間,比較兩圖可知,右圖能夠定位到重要的特征部位 。

若是用數(shù)值表示,MiniBatchSparsePCA類的主成分分量值為:

由上圖可知,主成分分量包含了很多零分量 。

6. PCA在數(shù)據(jù)重構(gòu)的應(yīng)用

數(shù)據(jù)重構(gòu)算法借鑒上一篇文章的圖:

淺藍(lán)色部分矩陣的乘積為數(shù)據(jù)的重構(gòu)過程,r為選擇的主成分分量個(gè)數(shù) 。r越大,重構(gòu)的數(shù)據(jù)與原始數(shù)據(jù)越接近或主成分分量的方差和比例越大,重構(gòu)的數(shù)據(jù)與原始數(shù)據(jù)越接近 ,圖形解釋如下:

n_components是0.2的數(shù)據(jù)重構(gòu)圖:

n_components是0.9的數(shù)據(jù)重構(gòu)圖:

因此,主成分分量越多,重構(gòu)的數(shù)據(jù)與原始數(shù)據(jù)越接近。

7. 總結(jié)

本文介紹了PCA類在降維和數(shù)據(jù)重構(gòu)的簡(jiǎn)單用法以及分析了sparsePCA類稀疏主成分分量的原理。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1200

    瀏覽量

    24619
  • PCA算法
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1294

原文標(biāo)題:scikit learn中PCA的使用方法

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    #機(jī)器學(xué)習(xí) 維之PCA

    編程語(yǔ)言PCApython
    電子技術(shù)那些事兒
    發(fā)布于 :2022年09月18日 17:17:32

    FPGA的重構(gòu)方式

    ,影響系統(tǒng)實(shí)時(shí)性。動(dòng)態(tài)重構(gòu)系統(tǒng)運(yùn)行中能實(shí)時(shí)全部或部分重構(gòu),且不中斷正常邏輯輸出,因而更有靈活性和高速度?! 〈蠖鄶?shù)FPGA都是基于LUT查找表結(jié)構(gòu),它們只適用于靜態(tài)重構(gòu),通過向LUT
    發(fā)表于 05-27 10:22

    求助,SVM分類時(shí)要不要先進(jìn)行PCA維呢?

    大家知道,既然SVM可以較好地解決小樣本、非線性、高維數(shù)等分類問題,那對(duì)于高維樣本輸入,需不需要提前進(jìn)行PCA維呢?PCA維對(duì)SVM有意義嗎?還有,當(dāng)SVM進(jìn)行高維樣本分類時(shí),有沒
    發(fā)表于 10-27 20:13

    【FPGA學(xué)習(xí)】VHDL的數(shù)據(jù)類型預(yù)定義屬性和數(shù)據(jù)范圍預(yù)定義屬性是怎么用的

    數(shù)據(jù)類型預(yù)定義屬性數(shù)據(jù)類型的屬性只有一個(gè) t'BASE 類型屬性,它必須由另一個(gè)值或函數(shù)類型屬性用該屬性。這個(gè)屬性將返回類型或者子類型的基本類型,這個(gè)屬性只能作另一屬性的前綴,
    發(fā)表于 09-17 10:04

    重構(gòu)波束天線技術(shù)增加網(wǎng)絡(luò)容量應(yīng)用

    對(duì)網(wǎng)絡(luò)質(zhì)量,也對(duì)服務(wù)區(qū)域、容量和數(shù)據(jù)速率產(chǎn)生巨大影響。更高的干擾實(shí)際上減小了3G和4G網(wǎng)絡(luò)中的服務(wù)區(qū)域,反之,降低干擾可增大服務(wù)區(qū)域。規(guī)劃3G和4G網(wǎng)絡(luò)過程中的一大關(guān)鍵目標(biāo)在于優(yōu)化并降低干擾?! ∠拗?/div>
    發(fā)表于 06-11 07:31

    為什么要重構(gòu)?如何重組Python包?

      未經(jīng)測(cè)試的代碼設(shè)計(jì)上是不好的代碼。您有測(cè)試用例嗎?如果是這樣,它們的完整性如何?這些測(cè)試用例是否最新?  為什么重構(gòu)之前需要測(cè)試用例?您可以辯稱,即使進(jìn)行了簡(jiǎn)單的更改,也不需要
    發(fā)表于 09-15 15:28

    講解Matlab的簡(jiǎn)單用法

    command窗口該如何去使用呢?怎樣matlab中創(chuàng)建一個(gè)一行四列的數(shù)組呢?
    發(fā)表于 11-18 06:32

    基于Autoencoder網(wǎng)絡(luò)的數(shù)據(jù)維和重構(gòu)

    機(jī)器學(xué)習(xí),模式識(shí)別以及數(shù)據(jù)挖掘等諸多研究領(lǐng)域中,往往會(huì)面臨著“維數(shù)災(zāi)難”問題。因此,特征數(shù)據(jù)維方法,即將高維的特征數(shù)據(jù)如何進(jìn)行簡(jiǎn)化投射
    發(fā)表于 11-18 13:58 ?16次下載

    函數(shù)的形式及用法_PPT簡(jiǎn)單講解

    函數(shù)的形式及用法_PPT簡(jiǎn)單講解,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 08-23 17:56 ?0次下載

    基于PCA的HK聚算法研究何瑩

    基于PCA的H_K聚算法研究_何瑩
    發(fā)表于 03-17 08:00 ?0次下載

    java并發(fā)編程實(shí)戰(zhàn)之輔助用法

    Java并發(fā)編程:CountDownLatch、CyclicBarrier和Semaphore2017-09-18 13:07程序設(shè)計(jì)/58 java 1.5中,提供了一些非常有用的輔助來幫助
    發(fā)表于 09-27 16:50 ?0次下載

    Java數(shù)組的常用方法_Java:數(shù)組工具Arrays的常用方法的用法及代碼

    本文主要詳細(xì)介紹了Java數(shù)組的常用方法以及數(shù)組工具Arrays的常用方法的用法及代碼。
    發(fā)表于 01-29 10:25 ?2905次閱讀

    PCA還是LDA?特征抽取經(jīng)典算法大PK

    (LDA)。PCA案例機(jī)器學(xué)習(xí)中,所使用的數(shù)據(jù)往往維數(shù)很大,我們需要使用維的方法來突顯信息含量較大的數(shù)據(jù),
    的頭像 發(fā)表于 01-10 13:40 ?8465次閱讀
    用<b class='flag-5'>PCA</b>還是LDA?特征抽取經(jīng)典算法大PK

    融合尺度維和重檢測(cè)的長(zhǎng)期目標(biāo)跟蹤算法

    針對(duì)長(zhǎng)期目標(biāo)跟蹤中存在的目標(biāo)遮擋、尺度變化和光照變化等干擾造成的跟蹤失敗冋題,提出一種融合尺度維和重檢測(cè)的長(zhǎng)期目標(biāo)跟蹤算法。該算法長(zhǎng)期相關(guān)性跟蹤算法的平移估計(jì)和尺度估計(jì)基礎(chǔ)上,采用主成分分析
    發(fā)表于 04-21 14:11 ?12次下載
    融合尺度<b class='flag-5'>降</b><b class='flag-5'>維和</b>重檢測(cè)的長(zhǎng)期目標(biāo)跟蹤算法

    STM8L定時(shí)器1和定時(shí)器4的簡(jiǎn)單用法

    STM8L定時(shí)器1和定時(shí)器4的簡(jiǎn)單用法背景介紹調(diào)試環(huán)境簡(jiǎn)介功能快捷鍵合理的創(chuàng)建標(biāo)題,有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個(gè)適合你的列表創(chuàng)建一個(gè)表格設(shè)定內(nèi)容
    發(fā)表于 12-27 18:30 ?12次下載
    STM8L定時(shí)器1和定時(shí)器4的<b class='flag-5'>簡(jiǎn)單用法</b>