Der hierarchische Clustering-Algorithmus ist ein unbeaufsichtigter Lernalgorithmus, der Datenpunkte gruppiert. Er wird auch hierarchisches Clustering oder hierarchischer Clustering-Algorithmus genannt. Es führt kontinuierlich die ähnlichsten Punkte oder Cluster basierend auf der Ähnlichkeit oder dem Abstand zwischen Punkten zusammen und erhält schließlich eine Baumstruktur (auch Clusterbaum oder Klassifizierungsbaum genannt), die alle Punkte in mehrere Cluster unterteilt.
Python ist eine der am weitesten verbreiteten Programmiersprachen mit vielen leistungsstarken Datenverarbeitungs- und Visualisierungstools und es gibt viele Implementierungen hierarchischer Clustering-Algorithmen. In diesem Artikel besprechen wir Methoden und einige Best Practices für die Implementierung hierarchischer Clustering-Algorithmen in Python.
Datenvorbereitung
Bevor Sie mit dem hierarchischen Clustering beginnen, müssen Sie den Datensatz für das Clustering vorbereiten. Im Allgemeinen sollten diese Datensätze die folgenden Bedingungen erfüllen:
In Python können wir die Pandas-Bibliothek zum Laden, Vorbereiten und Vorverarbeiten von Daten verwenden. Pandas stellt die DataFrame-Datenstruktur bereit, mit der Tabellendaten problemlos verarbeitet werden können. Das Folgende ist ein einfaches Beispiel:
import pandas as pd # 读取csv文件 data = pd.read_csv('data.csv') # 对数据进行预处理(比如标准化) data = (data - data.mean()) / data.std()
Darin rufen wir zuerst die Funktion read_csv
von Pandas auf, um eine CSV-Datei zu lesen, und normalisieren dann die gelesenen Daten, um die Daten in den Algorithmus einzufügen. 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
in der Scipy-Bibliothek verwenden, um hierarchisches Clustering durchzuführen. Hier ist ein einfaches Beispiel: 🎜rrreee🎜In diesem Beispiel verwenden wir die Funktion linkage
für das Clustering mit minimalem Abstand. Der erste Parameter dieser Funktion sind die Daten und der zweite Parameter ist die zu verwendende Verknüpfungsmethode. Hier verwenden wir die Methode 'single'
, bei der es sich um die Linkmethode mit minimalem Abstand handelt. 🎜🎜Visualisierung der Baumstruktur🎜🎜Die Baumstruktur ist der Kernbestandteil des hierarchischen Clustering-Algorithmus, der mithilfe eines Dendrogramms visualisiert werden kann. Python bietet viele Tools zur Visualisierung, zwei der beliebtesten sind Matplotlib und Seaborn-Bibliotheken. 🎜🎜Das Folgende ist ein einfaches Beispiel für die Verwendung der Matplotlib-Bibliothek zum Zeichnen eines Dendrogramms: 🎜rrreee🎜In diesem Beispiel erstellen wir zunächst eine Leinwand mit einer Axtachse und rufen dann die Funktion dendrogram
zum Zeichnen auf das Baumbild. Der erste Parameter dieser Funktion ist die Z-Matrix und der zweite Parameter ist das Achsenobjekt. Der Parameter leaf_font_size
wird zum Anpassen der Blattgröße verwendet. 🎜🎜Mit der Seaborn-Bibliothek können wir schönere und interaktivere Visualisierungen erhalten. Das Folgende ist ein Beispiel für die Verwendung der Seaborn-Bibliothek zum Zeichnen eines Dendrogramms: 🎜rrreee🎜 In diesem Beispiel konvertieren wir zunächst die Clustering-Ergebnisse in einen Datenrahmen und verwenden dann die Funktion scatterplot
in der Seaborn-Bibliothek das Baumbild zeichnen. Mit dem Parameter s
wird die Größe der Punkte angepasst. 🎜🎜Auswahl von Clustern🎜🎜In hierarchischen Clustering-Algorithmen gibt es zwei Methoden zur Auswahl von Clustern: basierend auf der Entfernung (d. h. der Höhe im Dendrogramm) und basierend auf der Anzahl. Basierend auf der Entfernung bedeutet, die maximale Entfernung oder die minimale Entfernung als Schwellenwert festzulegen und das Dendrogramm aufzuteilen, um Cluster zu bilden. Zahlenbasiert bezieht sich auf die Auswahl einer bestimmten Anzahl von Clustern, normalerweise ausgehend vom maximalen oder minimalen Abstand. Beide Methoden haben ihre Vor- und Nachteile und müssen im Einzelfall ausgewählt werden. 🎜🎜Das Folgende ist ein einfaches Beispiel für die Konvertierung hierarchischer Clustering-Ergebnisse in eine Cluster-Liste: 🎜rrreee🎜In diesem Beispiel verwenden wir die Funktion fcluster
, um hierarchische Clustering-Ergebnisse in eine Cluster-Liste zu konvertieren. Der erste Parameter dieser Funktion ist die Z-Matrix, der zweite Parameter ist der Schwellenwert und der dritte Parameter ist das Kriterium zur Bestimmung des Schwellenwerttyps. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel haben wir Methoden und einige Best Practices für die Implementierung hierarchischer Clustering-Algorithmen in Python besprochen. Wir haben uns zunächst mit der Datenaufbereitung befasst und dann die Algorithmenauswahl und Visualisierung von Baumstrukturen besprochen. Abschließend diskutieren wir Methoden zur Clusterauswahl. Diese Methoden können uns helfen, den hierarchischen Clustering-Algorithmus besser zu verstehen, sodass wir ihn auf unsere eigenen Daten anwenden und nützliche Schlussfolgerungen ziehen können. 🎜Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des hierarchischen Clustering-Algorithmus in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!