Detaillierte Erläuterung des hierarchischen Clustering-Algorithmus in Python

WBOY
Freigeben: 2023-06-10 09:28:37
Original
2426 Leute haben es durchsucht

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:

  • Der Datensatz sollte numerisch sein. Nicht numerische Daten können Fehler im Algorithmus verursachen.
  • Der Datensatz sollte vorverarbeitet werden, das heißt, er wurde einer Standardisierung, Merkmalsauswahl oder anderen Vorverarbeitungsvorgängen unterzogen, um Datenverzerrungen und Rauschen zu beseitigen.

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()
Nach dem Login kopieren

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')
Nach dem Login kopieren

在这个例子中,我们使用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()
Nach dem Login kopieren

在这个例子中,我们首先创建了一个带有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()
Nach dem Login kopieren

在这个例子中,我们首先将聚类结果转换为一个数据帧,然后使用seaborn库中的scatterplot函数绘制树状图。s参数用于调整点的大小。

簇的选择

在层次聚类算法中,有两种选择簇的方法:基于距离(即树状图中的高度)和基于数量。基于距离是指将最大距离或最小距离设为阈值,并将树状图割开,形成簇。基于数量是指选择一定数量的簇,通常是从最大距离或最小距离开始。这两种方法都有其优点和缺点,需要根据具体情况选择。

以下是一个将层次聚类结果转换为簇列表的简单例子:

from scipy.cluster.hierarchy import fcluster

# 将层次聚类结果转换为簇列表
clusters = fcluster(Z, t=2.0, criterion='distance')
Nach dem Login kopieren

在这个例子中,我们使用fcluster

Auswahl des Clustering-Algorithmus

In Python stehen viele Clustering-Algorithmen zur Auswahl, und der hierarchische Clustering-Algorithmus ist einer davon. Es erfordert jedoch die Auswahl eines geeigneten Algorithmus basierend auf den Eigenschaften und Anforderungen der Daten.

In klassischen hierarchischen Clustering-Algorithmen gibt es zwei Hauptverknüpfungsmethoden: minimale Entfernung und maximale Entfernung. Die Methode der minimalen Entfernung (oder einfache Konnektivität) vergleicht die ähnlichsten Punkte in zwei Populationen, während die Methode der maximalen Entfernung (oder Gesamtkonnektivität) die am wenigsten ähnlichen Punkte in den beiden Populationen vergleicht. Darüber hinaus gibt es eine Average-Link-Methode (auch UPGMA-Algorithmus genannt), die den durchschnittlichen Abstand zwischen zwei Gruppen zur Berechnung der Ähnlichkeit verwendet. In Python können wir die Funktion 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!