欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 層次聚類算法圖文示例

 更新時(shí)間:2023年03月22日 09:39:35   作者:冷凍工廠  
這篇文章主要介紹了python 層次聚類算法圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

  • 層次聚類是一種構(gòu)建聚類層次結(jié)構(gòu)的聚類算法。該算法從分配給它們自己的集群的所有數(shù)據(jù)點(diǎn)開始。然后將兩個(gè)最近的集群合并到同一個(gè)集群中。最后,當(dāng)只剩下一個(gè)集群時(shí),該算法終止。
  • 可以通過觀察樹狀圖來選擇最能描述不同組的簇?cái)?shù)的決定。聚類數(shù)的最佳選擇是樹狀圖中垂直線的數(shù)量,該水平線可以垂直橫穿最大距離而不與聚類相交。

1. 簡介

層次聚類(Hierarchical clustering)是一種常見的聚類算法,它將數(shù)據(jù)點(diǎn)逐步地合并成越來越大的簇,直到達(dá)到某個(gè)停止條件。層次聚類可以分為兩種方法:自下而上的聚合法(agglomerative)和自上而下的分 裂法(divisive)。在聚合法中,每個(gè)數(shù)據(jù)點(diǎn)最初被視為一個(gè)單獨(dú)的簇,然后每次迭代將距離最近的兩個(gè)簇合并為一個(gè)新的簇,直到所有點(diǎn)都合并成一個(gè)大簇。在分 裂法中,最初的簇被視為一個(gè)單獨(dú)的簇,然后每次迭代將當(dāng)前簇中距離最遠(yuǎn)的兩個(gè)點(diǎn)分成兩個(gè)新的簇,直到每個(gè)點(diǎn)都是一個(gè)簇為止。

2. 工作原理

  • 使每個(gè)數(shù)據(jù)點(diǎn)成為單點(diǎn)簇→形成N個(gè)簇
  • 取距離最近的兩個(gè)數(shù)據(jù)點(diǎn),使之成為一個(gè)簇→形成N-1個(gè)簇
  • 取最近的兩個(gè)簇并使它們成為一個(gè)簇→形成N-2個(gè)簇。
  • 重復(fù)第 3 步,直到只剩下一個(gè)集群。

有幾種方法可以測量聚類之間的距離以確定聚類規(guī)則,它們通常稱為鏈接方法。一些常見的鏈接方法是:

  • 完全鏈接:兩個(gè)集群之間的距離定義為每個(gè)集群中兩點(diǎn)之間的最長距離。
  • 單鏈接:兩個(gè)集群之間的距離定義為每個(gè)集群中兩點(diǎn)之間的最短距離。此鏈接可用于檢測數(shù)據(jù)集中的高值,這些值可能是異常值,因?yàn)樗鼈儗⒃谧詈蠛喜ⅰ?/li>
  • 平均鏈接:兩個(gè)聚類之間的距離定義為一個(gè)聚類中的每個(gè)點(diǎn)與另一個(gè)聚類中的每個(gè)點(diǎn)之間的平均距離。
  • Centroid-linkage:找到聚類1的質(zhì)心和聚類2的質(zhì)心,然后在合并前計(jì)算兩者之間的距離。

不同的鏈接方法導(dǎo)致不同的集群。

3. 樹狀圖

樹狀圖是一種顯示不同數(shù)據(jù)集之間的層次關(guān)系。正如已經(jīng)說過的,樹狀圖包含了層次聚類算法的記憶,因此只需查看樹狀圖就可以知道聚類是如何形成的。

4. Code

import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt
# 生成隨機(jī)數(shù)據(jù)
np.random.seed(0)
X = np.random.randn(15, 2)
# 計(jì)算距離矩陣
Z = linkage(X, 'ward')
# 繪制樹形圖
plt.figure(figsize=(10, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Sample index')
plt.ylabel('Distance')
dendrogram(
    Z,
    leaf_rotation=90.,
    leaf_font_size=8.,
)
plt.show()

在這個(gè)示例中,我們首先使用NumPy生成了一個(gè)隨機(jī)的二維數(shù)據(jù)集X,其中包含15個(gè)樣本。然后,我們使用SciPy中的linkage函數(shù)計(jì)算距離矩陣Z,這里使用了“ward”方法來計(jì)算簇之間的距離。最后,我們使用Matplotlib來繪制樹形圖,其中l(wèi)eaf_rotation和leaf_font_size參數(shù)用于調(diào)整葉子節(jié)點(diǎn)的旋轉(zhuǎn)角度和字體大小。

這個(gè)示例中生成的樹形圖顯示了不同樣本之間的距離,并且根據(jù)距離合并了不同的簇??梢酝ㄟ^樹形圖來確定最優(yōu)的簇的數(shù)量,可以在圖中找到最大距離的位置,然后畫一條水平線,這個(gè)水平線和垂直線的交點(diǎn)就是最優(yōu)的簇的數(shù)量。

以上就是python 層次聚類算法圖文示例的詳細(xì)內(nèi)容,更多關(guān)于python 層次聚類算法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論