主成分分析法是很常用的一種資料降維方法。該方法可以減少資料的維數,並保持對方差貢獻最大的特徵,相當於保留低階主成分,忽略高階主成分。
關於主成分的理論介紹和r語言**實現可見前段時間趙西西寫的推文:主成分分析
但是後面留了乙個小尾巴,如果想對主成分結果進行視覺化,那得怎麼實現?有沒有簡便的方法呢?
正好這幾天有讀者問起,那今天就來說說這個問題吧。
使用ggbiplot包中的ggbiplot()
函式,該函式 使用ggplot2對主成分進行視覺化。函式內部引數如下
ggbiplot(pcobj, choices = 1:2, scale = 1, pc.biplot =
true, obs.scale = 1 - scale, var.scale = scale, groups =
null, ellipse = false, ellipse.prob = 0.68, labels =
null, labels.size = 3, alpha = 1, var.axes = true, circle
= false, circle.prob = 0.69, varname.size = 3,
varname.adjust = 1.5, varname.abbrev = false, ...)
內部引數過多,就不做詳細解釋。如果對內部引數有興趣可以通過幫助文件進行查詢(?ggbiplot)。
這裡使用鳶尾花資料,給出乙個簡單的例子。大家可以將自己的資料進行匯入(如何匯入?可見推文:r資料科學|第八章內容介紹),替換鳶尾花資料。
注意:檢查自己資料集的資料結構是否和鳶尾花資料結構一致使用
prcomp()
進行主成分分析,然後將結果儲存到res.pca變數中。之後使用ggbiplot()
進行視覺化。其中觀測的尺度因子為1(obs.scale = 1
),變數的尺度因子為1(var.scale = 1
),每組繪製乙個橢圓(ellipse = true
)並新增相關係數的圓。
如果想給不同組別新增分別顯示不同顏色,則可以使用引數groups,然後設定為原始資料對應的組別向量(如果你的原始資料沒有該列資料,可以自行構造乙個向量。)
# 新增組別顏色
當然你可以在此基礎上加入ggplot內部的引數,比如更改主題,更改顏色,新增標題等一系列操作。
# 更改主題
使用factominer包的pca()
函式或者使用基礎包的
prcomp()
函式進行資料降維處理,然後使用factoextra包的fviz_pca_ind()
函式對結果進行視覺化。
這裡還是以鳶尾花的資料作為例子,沿用方法一的主成分分析結果res.pca。
這個包內部有四個主要繪製主成分結果的函式。
內部引數不做過多介紹,有興趣的讀者請看幫助文件。這裡只對下面的****現的引數進行解釋。
使用散點圖進行繪製(geom = "point"
),顏色使用"cos2"(col.ind="cos2"
),使用3階梯度顏色(gradient.cols = c("white", "#2e9fdf", "#fc4e07" )
)。
library(ggplot2)
# 各個樣本圖
如果想展示分組變數資訊,可以通過habillage引數設定,和第一種方法類似,這裡還加入了一些細節:各組新增橢圓(addellipses=true
),圖的版式使用"dark2"(palette = "dark2"
)。
當然可以使用palette = c("#999999", "#e69f00", "#56b4e9")
,根據**全文配色,進行手動調整。
如果想繪製個體和變數的雙圖,可以使用fviz_pca_biplot()
,內部其他引數構造相同,然後可以新增各種其他ggplot的函式,例如:
# 個體和變數的雙圖
# 只保留變數的標籤 #按組改變顏色,新增省略號
主成分分析的視覺化展示
一 主成分分析簡介 在對於一件事物的研究過程中,為了準確的反映事物間的關係,往往需要收集多維指標,以保證盡可能全面地收集資訊。然而多維指標往往會提高分析人員的分析難度,並且相似變數也造成了資訊重疊,不利於準確提煉資料關係的本質。主成分分析法 pca 就是一種常見的降維演算法,它能夠降低資料維度,減少...
R 主成分分析
一 實驗內容 基本思想 通過降維技術把多個變數化為幾個少數主成分的方法,即將原來眾多具有一定相關性的指標,重新組合成一組新的相互無關的綜合指標。表示形式 結論 1 uij為第i個成分yi和第j個原先的變數xj之間的線性係數 2 y1,y2,yp分別叫做第1主成分,第2主成分,第p主成分,y1得到最大...
結果視覺化
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def add layer inputs,input size,output size,activation function none weight...