Maison > Article > développement back-end > Explication détaillée de l'algorithme de clustering hiérarchique en Python
L'algorithme de clustering hiérarchique est un algorithme d'apprentissage non supervisé qui regroupe des points de données. Il est également appelé algorithme de clustering hiérarchique ou algorithme de clustering hiérarchique. Il fusionne en continu les points ou clusters les plus similaires en fonction de la similarité ou de la distance entre les points, et obtient finalement une structure arborescente (également appelée arbre de clustering ou arbre de classification), divisant tous les points en plusieurs clusters.
Python est l'un des langages de programmation les plus utilisés, avec de nombreux outils puissants de traitement et de visualisation des données, et il existe de nombreuses implémentations d'algorithmes de clustering hiérarchique. Dans cet article, nous discuterons des méthodes et de quelques bonnes pratiques pour implémenter des algorithmes de clustering hiérarchique en Python.
Préparation des données
Avant de commencer le clustering hiérarchique, vous devez préparer l'ensemble de données pour le clustering. De manière générale, ces ensembles de données doivent remplir les conditions suivantes :
En Python, nous pouvons utiliser la bibliothèque pandas pour charger, préparer et prétraiter les données. pandas fournit la structure de données DataFrame, qui peut facilement gérer les données tabulaires. Voici un exemple simple :
import pandas as pd # 读取csv文件 data = pd.read_csv('data.csv') # 对数据进行预处理(比如标准化) data = (data - data.mean()) / data.std()
Dans celui-ci, nous appelons d'abord la fonction read_csv
de pandas pour lire un fichier csv, puis normalisons les données lues pour mettre les données dans l'algorithme. read_csv
函数读取一个csv文件,然后将读取的数据进行标准化处理,以便将数据放入算法中。
聚类算法的选择
在Python中,有许多聚类算法可供选择,而层次聚类算法是其中之一。但是,它需要根据数据的特征和需求来选择合适的算法。
在经典层次聚类算法中,有两种主要的链接方法:最小距离和最大距离。最小距离(或称为单联通性)方法比较两个群体中最相似的点,而最大距离(或称为全联通性)方法则比较两个群体中最不相似的点。另外,还有一种平均链接方法(也叫UPGMA算法),它使用两个群体之间的平均距离来计算相似性。在Python中,我们可以使用scipy库中的linkage
函数来执行层次聚类。以下是一个简单的例子:
from scipy.cluster.hierarchy import linkage # 进行层次聚类 Z = linkage(data, method='single')
在这个例子中,我们使用linkage
函数进行最小距离聚类。该函数的第一个参数是数据,第二个参数是使用的链接方法。这里我们使用了'single'
方法,即最小距离链接方法。
树形结构的可视化
树形结构是层次聚类算法的核心部分,可以使用树状图对其进行可视化。Python提供了许多用于可视化的工具,其中最流行的两个是matplotlib和seaborn库。
以下是一个使用matplotlib库绘制树状图的简单例子:
import matplotlib.pyplot as plt from scipy.cluster.hierarchy import dendrogram fig, ax = plt.subplots(figsize=(15, 10)) # 绘制树状图 dendrogram(Z, ax=ax, leaf_font_size=8) plt.show()
在这个例子中,我们首先创建了一个带有ax轴的画布,然后调用dendrogram
函数绘制树状图。该函数的第一个参数是Z矩阵,第二个参数是轴对象。leaf_font_size
参数用于调整叶子大小。
使用seaborn库我们可以获得更美观和交互性更强的可视化效果。以下是使用seaborn库绘制树状图的例子:
import seaborn as sns sns.set(style='white') # 将聚类结果转换为DataFrame df = pd.DataFrame({'x': data.index, 'y': Z[:, 2]}) # 绘制树状图 sns.scatterplot(x='x', y='y', data=df, s=50, legend=False) plt.show()
在这个例子中,我们首先将聚类结果转换为一个数据帧,然后使用seaborn库中的scatterplot
函数绘制树状图。s
参数用于调整点的大小。
簇的选择
在层次聚类算法中,有两种选择簇的方法:基于距离(即树状图中的高度)和基于数量。基于距离是指将最大距离或最小距离设为阈值,并将树状图割开,形成簇。基于数量是指选择一定数量的簇,通常是从最大距离或最小距离开始。这两种方法都有其优点和缺点,需要根据具体情况选择。
以下是一个将层次聚类结果转换为簇列表的简单例子:
from scipy.cluster.hierarchy import fcluster # 将层次聚类结果转换为簇列表 clusters = fcluster(Z, t=2.0, criterion='distance')
在这个例子中,我们使用fcluster
linkage
dans la bibliothèque scipy pour effectuer un clustering hiérarchique. Voici un exemple simple : 🎜rrreee🎜Dans cet exemple, nous utilisons la fonction linkage
pour le clustering à distance minimale. Le premier paramètre de cette fonction est les données et le deuxième paramètre est la méthode de liaison à utiliser. Ici, nous utilisons la méthode 'single'
, qui est la méthode de lien à distance minimale. 🎜🎜Visualisation de la structure arborescente🎜🎜La structure arborescente est la partie centrale de l'algorithme de clustering hiérarchique, qui peut être visualisée à l'aide d'un dendrogramme. Python fournit de nombreux outils de visualisation, deux des plus populaires sont les bibliothèques matplotlib et seaborn. 🎜🎜Ce qui suit est un exemple simple d'utilisation de la bibliothèque matplotlib pour dessiner un dendrogramme : 🎜rrreee🎜Dans cet exemple, nous créons d'abord un canevas avec un axe axe, puis appelons la fonction dendrogram
pour dessiner la photo de l'arbre. Le premier paramètre de cette fonction est la matrice Z et le deuxième paramètre est l'objet axe. Le paramètre leaf_font_size
est utilisé pour ajuster la taille de la feuille. 🎜🎜En utilisant la bibliothèque Seaborn, nous pouvons obtenir des visualisations plus belles et interactives. Voici un exemple d'utilisation de la bibliothèque seaborn pour dessiner un dendrogramme : 🎜rrreee🎜 Dans cet exemple, nous convertissons d'abord les résultats du clustering en un bloc de données, puis utilisons la fonction scatterplot
dans la bibliothèque seaborn. pour dessiner l'image de l'arbre. Le paramètre s
permet d'ajuster la taille des points. 🎜🎜Sélection de clusters🎜🎜Dans les algorithmes de clustering hiérarchique, il existe deux méthodes de sélection de clusters : basée sur la distance (c'est-à-dire la hauteur dans le dendrogramme) et basée sur le nombre. Basé sur la distance, cela signifie définir la distance maximale ou la distance minimale comme seuil et diviser le dendrogramme pour former des clusters. La méthode numérique fait référence à la sélection d'un certain nombre de clusters, généralement en commençant par la distance maximale ou minimale. Les deux méthodes ont leurs avantages et leurs inconvénients et doivent être choisies au cas par cas. 🎜🎜Ce qui suit est un exemple simple de conversion de résultats de clustering hiérarchique en une liste de clusters : 🎜rrreee🎜Dans cet exemple, nous utilisons la fonction fcluster
pour convertir les résultats de clustering hiérarchique en une liste de clusters. Le premier paramètre de cette fonction est la matrice Z, le deuxième paramètre est le seuil et le troisième paramètre est le critère de détermination du type de seuil. 🎜🎜Résumé🎜🎜Dans cet article, nous avons discuté des méthodes et de quelques bonnes pratiques pour implémenter des algorithmes de clustering hiérarchique en Python. Nous avons d’abord examiné la préparation des données, puis discuté de la sélection d’algorithmes et de la visualisation des structures arborescentes. Enfin, nous discutons des méthodes de sélection de clusters. Ces méthodes peuvent nous aider à mieux comprendre l’algorithme de clustering hiérarchique, afin que nous puissions l’appliquer à nos propres données et tirer des conclusions utiles. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!