一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

使用PCA算法對(duì)原始數(shù)據(jù)降維

 生信修煉手冊(cè) 2021-03-29
PCA是Principal components analysis的簡(jiǎn)稱,叫做主成分分析,是使用最廣泛的降維算法之一。所謂降維,就是降低特征的維度,最直觀的變化就是特征的個(gè)數(shù)變少了。當(dāng)然,不同于特征篩選,這里的降維主要是通過(guò)高維空間向低維空間投影來(lái)實(shí)現(xiàn)的,圖示如下

PCA算法的計(jì)算步驟分為以下5步

#### 1. 原始特征值的標(biāo)準(zhǔn)化

PCA中所用的標(biāo)準(zhǔn)化方式為零均值標(biāo)準(zhǔn)化,公式如下

對(duì)于每一個(gè)特征,在原始值的基礎(chǔ)上減去平均值,然后除以標(biāo)準(zhǔn)差,通過(guò)這一操作將不同量綱的特征統(tǒng)一歸一化成標(biāo)準(zhǔn)正態(tài)分布,可以進(jìn)行統(tǒng)一比較。

#### 2, 計(jì)算協(xié)方差矩陣

協(xié)方差用于衡量?jī)蓚€(gè)變量之間的相關(guān)性,這個(gè)概念是在方差的基礎(chǔ)上延伸而來(lái),方差的定義如下

方差用于衡量變量偏移均值的程度,而協(xié)方差的公式如下

同時(shí)考慮了x和y兩個(gè)變量偏移均值的程度,而且由于是相乘操作,所以當(dāng)協(xié)方差的值大于0時(shí),x和y的變化方向相同,小于0時(shí),x和y的變化方向相反。因此,協(xié)方差的值可以反映兩個(gè)變量之間的相關(guān)性,而且相關(guān)系數(shù)也就是在協(xié)方差的基礎(chǔ)上除以兩個(gè)變量的標(biāo)準(zhǔn)差得到的,pearson相關(guān)系數(shù)的公式如下

協(xié)方差矩陣就是多個(gè)變量?jī)蓛芍g協(xié)方差所構(gòu)成的矩陣,以3個(gè)特征為例,對(duì)應(yīng)的協(xié)方差矩陣如下

對(duì)于變量與自身的協(xié)方差,其值就是對(duì)應(yīng)的方差了,所以在協(xié)方差矩陣中,對(duì)角線的值是各個(gè)變量的方差。

#### 3. 計(jì)算協(xié)方差矩陣的特征值和特征向量

這一步是PCA的核心,PCA中所謂的主成分就是特征值最大的特征向量了。所以首先計(jì)算特征值和特征向量。從這里看出,PCA降維之后的主成分,并不是原來(lái)輸入的特征了,而是原始特征的線性組合。

#### 4. 選取topN主成分

將特征值按照從大到小排序,選取topN個(gè)特征向量,構(gòu)成新的特征矩陣。

#### 5. 投影

將樣本點(diǎn)投影到特征向量上,以二維數(shù)據(jù)為例,投影前的結(jié)果如下

投影到特征向量之后的結(jié)果如下

對(duì)于每一個(gè)主成分而言,有一個(gè)方差,這個(gè)值就是投影到該主成分之后的值對(duì)應(yīng)的方差,示意如下

在篩選主成分的時(shí)候,我們會(huì)利用如下所示的碎石圖

圖中橫坐標(biāo)表示每個(gè)主成分,依次為PC1, PC2, 對(duì)應(yīng)的方差值由大變小,通過(guò)判斷折線圖的拐點(diǎn)來(lái)篩選topN個(gè)主成分。

在scikit-learn中,進(jìn)行PCA降維的代碼如下

>>> from sklearn import datasets
>>> from sklearn.decomposition import PCA
>>> iris = datasets.load_iris()
>>> X = iris.data
>>> y = iris.target
>>> pca = PCA(n_components=2)
>>> X_r = pca.fit(X).transform(X)
>>> pca.explained_variance_ratio_
array([0.92461872, 0.05306648])

可視化的代碼如下

>>> import matplotlib.pyplot as plt
>>> target_names = iris.target_names
>>> plt.figure()
<Figure size 640x480 with 0 Axes>
>>> colors = ['navy', 'turquoise', 'darkorange']
>>> lw = 2
>>> for color, i, target_name in zip(colors, [0, 1, 2], target_names):
... plt.scatter(X_r[y == i, 0], X_r[y == i, 1], color=color, alpha=.8, lw=lw,
... label=target_name)
...
<matplotlib.collections.PathCollection object at 0x01894FD0>
<matplotlib.collections.PathCollection object at 0x018A31A8>
<matplotlib.collections.PathCollection object at 0x018A33B8>
>>> plt.legend(loc='best', shadow=False, scatterpoints=1)
<matplotlib.legend.Legend object at 0x018F8700>
>>> plt.title('PCA of IRIS dataset')
Text(0.5, 1.0, 'PCA of IRIS dataset')
>>> plt.show()

結(jié)果如下

作為應(yīng)用最廣泛的降維算法,PCA方法計(jì)算簡(jiǎn)便,易于實(shí)現(xiàn),但是解釋性較差,因?yàn)樾碌闹鞒煞质窃继卣鞯慕M合,無(wú)法與原始特征一一對(duì)應(yīng)。

·end·

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    九九热这里只有精品视频| 精品欧美国产一二三区| 久久热在线视频免费观看| 99久久免费看国产精品| 日本午夜免费福利视频| 亚洲男人天堂网在线视频| 午夜福利网午夜福利网| 亚洲专区中文字幕在线| 97精品人妻一区二区三区麻豆| 国产乱淫av一区二区三区| 国产一区二区不卡在线播放| 国产欧洲亚洲日产一区二区| 污污黄黄的成年亚洲毛片| 欧美日韩一区二区三区色拉拉| 国产又粗又猛又爽又黄的文字| 午夜小视频成人免费看| 91精品视频免费播放| 人妻内射精品一区二区| 国产精品香蕉一级免费| 中文字幕久久精品亚洲乱码| 国产精品视频久久一区| 色婷婷日本视频在线观看| 久久热九九这里只有精品| 国产av精品高清一区二区三区| 午夜激情视频一区二区| 国产一区二区熟女精品免费| 国产高清一区二区白浆| 美女被后入视频在线观看| 久久精品欧美一区二区三不卡 | 可以在线看的欧美黄片| 日韩黄片大全免费在线看| 国产又色又爽又黄的精品视频| 夫妻性生活黄色录像视频| 欧美一区二区在线日韩| 欧美日韩乱码一区二区三区| 国产超碰在线观看免费| 国产精品色热综合在线| 亚洲中文字幕三区四区| 亚洲在线观看福利视频| 99免费人成看国产片| 成人日韩在线播放视频|