最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

R語言實現(xiàn)PCA主成分分析圖的示例代碼

 更新時間:2022年04月29日 08:32:34   作者:watermark's  
主成分分析(Principal?Component?Analysis,PCA)是一種無監(jiān)督的數(shù)據(jù)降維方法,通過主成分分析可以盡可能保留下具備區(qū)分性的低維數(shù)據(jù)特征。本文將用R語言實現(xiàn)PCA主成分分析圖,需要的可以參考一下

簡介

主成分分析(Principal Component Analysis,PCA)是一種無監(jiān)督的數(shù)據(jù)降維方法,通過主成分分析可以盡可能保留下具備區(qū)分性的低維數(shù)據(jù)特征。主成分分析圖能幫助我們直觀地感受樣本在降維后空間中的分簇和聚合情況,這在一定程度上亦能體現(xiàn)樣本在原始空間中的分布情況,這對于只能感知三維空間的人類來說,不失為一種不錯的選擇。

再舉個形象的栗子,假如你是一本養(yǎng)花工具宣傳冊的攝影師,你正在拍攝一個水壺。水壺是三維的,但是照片是二維的,為了更全面的把水壺展示給客戶,你需要從不同角度拍幾張圖片。下圖是你從四個方向拍的照片:

PCA形象解釋說明

第一張圖里水壺的背面可以看到,但是看不到前面。

第二張圖是拍前面,可以看到壺嘴,這張圖可以提供了第一張圖缺失的信息,但是壺把看不到了。

第三張俯視圖既可以看到壺嘴,也可以看到壺把,但是無法看出壺的高度。

第四張圖是你打算放進目錄的,水壺的高度,頂部,壺嘴和壺把都清晰可見。

PCA的設計理念與此類似,它可以將高維數(shù)據(jù)集映射到低維空間的同時,盡可能的保留更多變量。

開始作圖

使用 R 語言能做出像 SIMCA-P 一樣的 PCA 圖嗎?

答案是肯定的,使用 R 語言不僅能做出像 SIMCA-P 一樣的 PCA 圖,還能做出比 SIMCA-P 更好看的圖,而且好看的上限僅取決于個人審美風格。

1. PCA 分析圖本質(zhì)上是散點圖

主成分分析圖 = 散點圖 + 置信橢圓,散點的橫縱坐標對應 PCA 的第一主成分、第二主成分。

library(ggplot2)

# 數(shù)據(jù)準備
data = subset(iris, select = -Species)
class = iris[["Species"]]

# PCA
pca = prcomp(data, center = T, scale. = T)
pca.data = data.frame(pca$x)
pca.variance = pca$sdev^2 / sum(pca$sdev^2)

ggplot(pca.data, aes(x = PC1, y = PC2)) +
    geom_point(size = 3) +
    geom_hline(yintercept = 0) + 
    geom_vline(xintercept = 0) +
    stat_ellipse(aes(x = PC1, y = PC2), linetype = 2, size = 0.5, level = 0.95) + 
    theme_bw()

散點圖+橢圓

2. 為不同類別著色

接下來想給散點加上分類顏色:

library(ggplot2)

# 數(shù)據(jù)準備
data = subset(iris, select = -Species)
class = iris[["Species"]]

# PCA
pca = prcomp(data, center = T, scale. = T)
pca.data = data.frame(pca$x)
pca.variance = pca$sdev^2 / sum(pca$sdev^2)

ggplot(pca.data, aes(x = PC1, y = PC2, color = class)) +
    geom_point(size = 3) +
    geom_hline(yintercept = 0) + 
    geom_vline(xintercept = 0) +
    stat_ellipse(aes(x = PC1, y = PC2), linetype = 2, size = 0.5, level = 0.95) + 
    theme_bw()

給不同類別樣本著色

顏色是加上了,但是橢圓咋變成了 3 個?

原來是 stat_ellipse 函數(shù)默認對每個類別的數(shù)據(jù)計算自己的置信區(qū)間。如何對多類樣本只計算一個置信區(qū)間呢?查看 stat_ellipse 的幫助文檔:

inherit.aesdefault TRUE, If FALSE, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification,

原來是 stat_ellipse 函數(shù)默認會繼承 ggplot 中的 aes 設置,如果希望 stat_ellipse 使用自己的 aes 設置,需要將參數(shù) inherit.aes 設置為 FALSE。

library(ggplot2)

# 數(shù)據(jù)準備
data = subset(iris, select = -Species)
class = iris[["Species"]]

# PCA
pca = prcomp(data, center = T, scale. = T)
pca.data = data.frame(pca$x)
pca.variance = pca$sdev^2 / sum(pca$sdev^2)

ggplot(pca.data, aes(x = PC1, y = PC2, color = class)) +
    geom_point(size = 3) +
    geom_hline(yintercept = 0) + 
    geom_vline(xintercept = 0) +
    stat_ellipse(aes(x = PC1, y = PC2), linetype = 2, size = 0.5, level = 0.95, inherit.aes = FALSE) + 
    theme_bw()

給不同類別樣本著色

3. 樣式微調(diào)

接下來對樣式進行微調(diào):為不同類別樣本自定義著色,添加 x 軸、y 軸標題,添加 title:

library(ggplot2)

# 數(shù)據(jù)準備
data = subset(iris, select = -Species)
class = iris[["Species"]]

# PCA
pca = prcomp(data, center = T, scale. = T)
pca.data = data.frame(pca$x)
pca.variance = pca$sdev^2 / sum(pca$sdev^2)

# 自定義顏色
palette = c("mediumseagreen", "darkorange", "royalblue")

ggplot(pca.data, aes(x = PC1, y = PC2, color = class)) +
    geom_point(size = 3) +
    geom_hline(yintercept = 0) + 
    geom_vline(xintercept = 0) +
    stat_ellipse(aes(x = PC1, y = PC2), linetype = 2, size = 0.5, level = 0.95, inherit.aes = FALSE) + 
    theme_bw() +
    scale_color_manual(values = palette) +
    theme(panel.grid.major.x = element_blank(),
          panel.grid.minor.x = element_blank(),
          panel.grid.major.y = element_blank(),
          panel.grid.minor.y = element_blank()) +
    labs(x = paste0("PC1: ", signif(pca.variance[1] * 100, 3), "%"), 
         y = paste0("PC2: ", signif(pca.variance[2] * 100, 3), "%"), 
         title = paste0("PCA of iris")) +
    theme(plot.title = element_text(hjust = 0.5))

樣式微調(diào)

將作圖結果和 SIMCA-P 對比,散點、橢圓基本完全一致,只是比它更順眼一些罷了~

到此這篇關于R語言實現(xiàn)PCA主成分分析圖的示例代碼的文章就介紹到這了,更多相關R語言 PCA主成分分析圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • R語言基礎數(shù)據(jù)類型的具體使用

    R語言基礎數(shù)據(jù)類型的具體使用

    本文主要介紹了R語言基礎數(shù)據(jù)類型的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • R語言中do.call()的使用說明

    R語言中do.call()的使用說明

    這篇文章主要介紹了R語言中do.call()的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Rcpp入門R代碼提速方法過程

    Rcpp入門R代碼提速方法過程

    這篇文章主要為大家介紹了Rcpp入門如何讓R代碼更快的提速方法過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • R語言編程學習從Github上安裝包解決網(wǎng)絡問題

    R語言編程學習從Github上安裝包解決網(wǎng)絡問題

    這篇文章主要為大家介紹了R語言編程從Github上安裝包的過程詳解,這樣可以解決很多網(wǎng)絡問題,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • R ggplot2 修改默認顏色的操作

    R ggplot2 修改默認顏色的操作

    這篇文章主要介紹了R ggplot2 修改默認顏色的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言及其IDE(RStudio)下載安裝詳細流程

    R語言及其IDE(RStudio)下載安裝詳細流程

    這篇文章主要介紹了R語言及其IDE(RStudio)下載安裝詳細流程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • R語言的下載安裝圖文教程講解

    R語言的下載安裝圖文教程講解

    這篇文章主要介紹了R語言的下載安裝圖文教程講解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • R語言ggplot2拼圖包patchwork安裝使用

    R語言ggplot2拼圖包patchwork安裝使用

    這篇文章主要介紹了R語言ggplot2拼圖包patchwork安裝使用的圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • R語言批量讀取某路徑下文件內(nèi)容的方法

    R語言批量讀取某路徑下文件內(nèi)容的方法

    批量地做就是解放雙手地過程,本文主要介紹了R語言批量讀取某路徑下文件內(nèi)容的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • R 安裝包安裝(install.packages)時報錯的解決方案

    R 安裝包安裝(install.packages)時報錯的解決方案

    這篇文章主要介紹了R 安裝包安裝(install.packages)時報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論

鄂托克前旗| 新野县| 林芝县| 襄垣县| 乌兰浩特市| 镇远县| 天峨县| 长阳| 根河市| 新昌县| 淮滨县| 兴和县| 吉木乃县| 革吉县| 玉树县| 关岭| 汉中市| 博白县| 大连市| 红安县| 湖州市| 富源县| 东阳市| 麻城市| 忻城县| 那曲县| 海盐县| 巫溪县| 曲水县| 碌曲县| 濉溪县| 田阳县| 油尖旺区| 呼玛县| 宣恩县| 彭水| 闽清县| 兴山县| 灵武市| 延边| 六盘水市|