輪廓系數(Average silhouette) | 最佳聚類數的判定

1.最佳分類個數

# 輔助確定最佳聚類數  4.7*2.6
factoextra::fviz_nbclust( t(DPAU_2), kmeans, method = "silhouette")

在這里插入圖片描述
在2有下降拐點,但是樣本較多時分成2類一般意義不大。
在7時也有下降拐點。

2.查看每個分類的輪廓系數

(1) pam k=5

library(cluster)
set.seed(101)
pamclu=cluster::pam(t(DPAU_2), k=5){
pdf( paste0(outputRoot, keyword, "_01_2.K_means.silhouette.pdf"), width=6, height=5)
df1=silhouette(pamclu)
plot(silhouette(pamclu), col = (1+ head(df1, n=nrow(df1)) |> as.data.frame() |> pull("cluster")),main=NULL)
dev.off()
}

在這里插入圖片描述
Fig1. Silhouette plot displaying the composition (n = number of samples) and stability (average width) of clustering.

(2) pam k=6

library(cluster)
set.seed(101)
pamclu=cluster::pam(t(DPAU_2), k=6){
pdf( paste0(outputRoot, keyword, "_01_2.K_means.6.silhouette.pdf"), width=6, height=5)
df1=silhouette(pamclu)
plot(silhouette(pamclu), col = (1+ head(df1, n=nrow(df1)) |> as.data.frame() |> pull("cluster")),main=NULL)
dev.off()
}

在這里插入圖片描述

(3) pam k=7

library(cluster)
set.seed(101)
pamclu=cluster::pam(t(DPAU_2), k=7){
pdf( paste0(outputRoot, keyword, "_01_2.K_means.7.silhouette.pdf"), width=6, height=5)
df1=silhouette(pamclu)
df1=head(df1, n=nrow(df1)) |> as.data.frame()
plot(silhouette(pamclu), col = df1$cluster +1,#xlim=c(min(df1$sil_width)-0.2, max(df1$sil_width))+0.2,main=NULL)
dev.off()
}

在這里插入圖片描述

(4) kmeans k=5

dat=DPAU_2
kclu=kmeans(t(dat), centers=5)#kclu$clustering=kclu$cluster #add this list element: clustering
distance=dist( t(dat) )  #10min
kclu.sil=sortSilhouette( silhouette(kclu$cluster, dist = distance ) )
#rownames(kclu.sil)=colnames(dat)
head(kclu.sil)
#     cluster neighbor sil_width
#1226       1        2 0.1124117
#991        1        2 0.1113240
pdf( paste0(outputRoot, keyword, "_01_2.K_means.5.silhouette.pdf"), width=6, height=5)
df1=kclu.sil
df1=head(df1, n=nrow(df1)) |> as.data.frame()
plot(kclu.sil, col = rev(df1$cluster+1),do.col.sort=F,main=NULL)factoextra::fviz_silhouette(kclu.sil)
dev.off()

在這里插入圖片描述
在這里插入圖片描述

(5) hclust, k=4

dat=DPAU_2
distance=dist( t(dat) ) 
out.hclust=hclust(distance, method = "ward.D2")# visual
pdf( paste0(outputRoot, keyword, "_01_2.hclust.4.silhouette.pdf"), width=6, height=5)
plot(out.hclust,#hang = -1,#hang=0.1,hang=0,ann=F, axes=F, labels = F, #no labelscex = 0.7,col = "grey20")
rect.hclust( out.hclust, k=4, border = c("#FF6B6B", "#4ECDC4", "#556270", "deeppink") )
# sil plot
out.hclust.D2=cutree(out.hclust, k=4)
sil_hclust=sortSilhouette(silhouette(out.hclust.D2, distance))
rownames(sil_hclust) = rownames(as.matrix(distance))[attr(sil_hclust, 'iOrd')]
#
plot(sil_hclust, col=out.hclust.D2[rownames( head(sil_hclust, n=nrow(sil_hclust)) )]+1,main=attr(sil_hclust, "call") |> deparse() )
dev.off()

在這里插入圖片描述
在這里插入圖片描述

3. 輪廓系數的解釋

輪廓系數(Silhouette Coefficient),是聚類效果好壞的一種評價方式。最早由 Peter J. Rousseeuw 在 1986 提出。 它結合內聚度和分離度兩種因素。可以用來在相同原始數據的基礎上用來評價不同算法、或者算法不同運行方式對聚類結果所產生的影響。

  • 內聚度可以理解為反映一個樣本點與類內元素的緊密程度。
  • 分離度可以理解為反映一個樣本點與類外元素的緊密程度。

對于一個樣本集合,它的輪廓系數是所有樣本輪廓系數的平均值。

  • 當a(i)<b(i)時,即類內的距離小于類間距離,則聚類結果更緊湊。S的值會趨近于1。越趨近于1代表輪廓越明顯。
  • 相反,當a(i)>b(i)時,類內的距離大于類間距離,說明聚類的結果很松散。S的值會趨近于-1,越趨近于-1則聚類的效果越差。
  • 輪廓系數S的取值范圍為[-1, 1],輪廓系數越大聚類效果越好。

Ref:

  • https://baike.baidu.com/item/輪廓系數/17361607
  • https://pubmed.ncbi.nlm.nih.gov/32929364/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19317.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19317.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19317.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Paddle】Inplace相關問題:反向傳播、影響內存使用和性能

【Paddle】Inplace相關問題&#xff1a;反向傳播、影響內存使用和性能 寫在最前面inplace 的好處有哪些&#xff1f;能降低計算復雜度嗎在反向傳播時&#xff0c;Inplace為什么會阻礙呢&#xff1f;“計算圖的完整性受損”表達有誤原地操作 sin_()為什么原地操作會阻礙反向傳播…

活動會議邀請函制作易企秀源碼系統 清爽的畫面輕輕滑動自動翻頁 帶完整的前后端搭建教程

系統概述 在當今數字化時代&#xff0c;活動會議的組織和宣傳變得至關重要。為了滿足這一需求&#xff0c;活動會議邀請函制作易企秀源碼系統應運而生。它不僅為用戶提供了一個便捷、高效的工具&#xff0c;還具備一系列令人矚目的特色功能&#xff0c;為活動會議的成功舉辦提…

Ubuntu22.04設置程序崩潰產生Core文件

Ubuntu22.04設置程序崩潰產生Core文件 文章目錄 Ubuntu22.04設置程序崩潰產生Core文件摘要Ubuntu 生成Core文件配置1. 檢查 core 文件大小限制2. 設置 core 文件大小限制3. 配置 core 文件命名和存儲路徑4. 重啟系統或重新加載配置5. 測試配置 關鍵字&#xff1a; Ubuntu、 C…

Dubbo底層RPC原理深度解析

Dubbo作為一款高性能的分布式服務框架&#xff0c;其核心在于其底層的RPC實現&#xff0c;它允許服務在分布式系統中的不同節點間透明地進行遠程調用。以下是Dubbo底層RPC原理的詳細介紹&#xff1a; 基本概念 RPC&#xff08;Remote Procedure Call&#xff09;是一種編程模型…

CSS浮動詳細教學(CSS從入門到精通學習第四天)

css第04天 一、其他樣式 1、圓角邊框 在 CSS3 中&#xff0c;新增了圓角邊框樣式&#xff0c;這樣我們的盒子就可以變圓角了。 border-radius 屬性用于設置元素的外邊框圓角。 語法&#xff1a; border-radius:length; 參數值可以為數值或百分比的形式如果是正方形&…

js 如何封裝一個iframe通訊的sdk

在JavaScript中&#xff0c;封裝一個用于iframe間通信的SDK&#xff0c;可以利用postMessage和message事件監聽來實現跨域通信。以下是一個簡單的示例&#xff0c;展示如何封裝這樣一個SDK&#xff1a; 步驟 1: 創建SDK文件 首先&#xff0c;創建一個名為IframeCommunicator.…

RTT UART設備框架學習

UART簡介 UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;通用異步收發傳輸器&#xff0c;UART 作為異步串口通信協議的一種&#xff0c;工作原理是將傳輸數據的每個字符一位接一位地傳輸。是在應用程序開發過程中使用頻率最高的數據總線。 UART串…

MySQL注入 — Dns 注入

DNS注入原理 通過子查詢&#xff0c;將內容拼接到域名內&#xff0c;讓load_file()去訪問共享文件&#xff0c;訪問的域名被記錄此時變為顯錯注入,將盲注變顯錯注入,讀取遠程共享文件&#xff0c;通過拼接出函數做查詢,拼接到域名中&#xff0c;訪問時將訪問服務器&#xff0c;…

CISP難度將加大?還考不考啊...

最新消息&#xff1a;CISP即將調整知識體系大綱&#xff0c;更新題庫&#xff0c;后續考試難度加大。 最近幾年&#xff0c;CISP改版地比較頻繁&#xff0c;難度也在不斷上升&#xff0c;因此各位小伙伴有考CISP想法的盡早考。 隨著《網絡安全法》、《網絡空間安全戰略》、《…

2024/5/28 P1247 取火柴游戲

取火柴游戲 題目描述 輸入 k k k 及 k k k 個整數 n 1 , n 2 , ? , n k n_1,n_2,\cdots,n_k n1?,n2?,?,nk?&#xff0c;表示有 k k k 堆火柴棒&#xff0c;第 i i i 堆火柴棒的根數為 n i n_i ni?&#xff1b;接著便是你和計算機取火柴棒的對弈游戲。取的規則如下&…

定點化和模型量化(三)

量化解決的是訓練使用的浮點和運行使用的硬件只支持定點的矛盾。這里介紹一些實際量化中使用到的工具。 SNPE簡介 The Snapdragon Neural Processing Engine (SNPE)是高通驍龍為了加速網絡模型設計的框架。但它不只支持高通&#xff0c;SNPE還支持多種硬件平臺&#xff0c;AR…

Beego 使用教程 8:Session 和 Cookie

beego 是一個用于Go編程語言的開源、高性能的 web 框架 beego 被用于在Go語言中企業應用程序的快速開發&#xff0c;包括RESTful API、web應用程序和后端服務。它的靈感來源于Tornado&#xff0c; Sinatra 和 Flask beego 官網&#xff1a;http://beego.gocn.vip/ 上面的 be…

抄表營收系統是什么?

1.抄表營收系統的概念和功能 抄表營收系統是一種自動化軟件&#xff0c;主要運用于公用事業公司(如電力工程、水、天然氣等)管理方法其服務的計量檢定、計費和收付款全過程。該系統根據集成化智能儀表、遠程控制數據收集和分析功能&#xff0c;提高了效率&#xff0c;降低了人…

(十)Python3 接口自動化測試,測試結果發送郵件

(十)Python3 接口自動化測試,測試結果發送郵件 1.前言 Windows本地執行的話,可自行編寫發送郵件方法發送郵件。 Jenkins執行的話,可用jenkins配套郵件發送郵件。 2.發送郵件示例 # -*- coding: utf-8 -*- # 主程序 import sys sys.path.append(./server) sys.path.appe…

人臉識別——探索戴口罩對人臉識別算法的影響

1. 概述 人臉識別是一種機器學習技術&#xff0c;廣泛應用于各種領域&#xff0c;包括出入境管制、電子設備安全登錄、社區監控、學校考勤管理、工作場所考勤管理和刑事調查。然而&#xff0c;當 COVID-19 引發全球大流行時&#xff0c;戴口罩就成了日常生活中的必需品。廣泛使…

反射機制大揭秘-進階Java技巧,直擊核心!

反射在Java中扮演著重要的角色&#xff0c;掌握了反射&#xff0c;就等于掌握了框架設計的鑰匙。本文將為您逐步講解反射的基本概念、獲取Class對象的三種方式、使用反射實例化對象并操作屬性和方法&#xff0c;還有解析包的相關內容。跟隨我一起探索反射的奧秘&#xff0c;提升…

使用 Ubuntu + Docker + Vaultwarden + Tailscale 自建密碼管理器

使用 Ubuntu Docker Vaultwarden Tailscale 自建密碼管理器 先決條件 一臺運行 Ubuntu 系統的服務器。可以是云提供商的 VPS、家庭網絡中的樹莓派、或者 Windows 電腦上的虛擬機等等 一個 Tailscale 賬戶。如果還沒有 Tailscale 賬戶&#xff0c;可以通過此鏈接迅速創建一個…

SelfKG論文翻譯

SelfKG: Self-Supervised Entity Alignment in Knowledge Graphs SelfKG&#xff1a;知識圖中的自監督實體對齊 ABSTRACT 實體對齊旨在識別不同知識圖譜&#xff08;KG&#xff09;中的等效實體&#xff0c;是構建網絡規模知識圖譜的基本問題。在其發展過程中&#xff0c;標…

華納云:MAC電腦怎么遠程連接Windows服務器桌面?

在Mac電腦上遠程連接Windows服務器桌面可以通過多種方式實現&#xff0c;最常用的方法是使用微軟提供的免費應用程序 "Microsoft Remote Desktop"。以下是詳細的步驟來設置和使用該工具&#xff1a; 步驟一&#xff1a;下載和安裝 Microsoft Remote Desktop 打開App …

SpringBoot的自動裝配

我們今天再來說一下關于 SpringBoot 的自動裝配&#xff0c;為什么會有這樣的問題呢&#xff1f;一般這種情況都是在面試的過程中&#xff0c;面試官有時候會問到這個問題&#xff0c;就比如從開始問SpringBoot 的一些常用注解&#xff0c;到SpringBoot的一些特性&#xff0c;然…