ホームページ >バックエンド開発 >Python チュートリアル >Pythonの階層型クラスタリングアルゴリズムの詳細説明
階層的クラスタリング アルゴリズムは、データ ポイントをグループ化する教師なし学習アルゴリズムであり、階層的クラスタリングまたは階層的クラスタリング アルゴリズムとも呼ばれます。ポイント間の類似性または距離に基づいて最も類似したポイントまたはクラスターを継続的にマージし、最終的にすべてのポイントを複数のクラスターに分割するツリー構造 (クラスタリング ツリーまたは分類ツリーとも呼ばれます) を取得します。
Python は最も広く使用されているプログラミング言語の 1 つで、強力なデータ処理および視覚化ツールが多数あり、階層的クラスタリング アルゴリズムが多数実装されています。この記事では、Python で階層的クラスタリング アルゴリズムを実装するための方法といくつかのベスト プラクティスについて説明します。
データの準備
階層クラスタリングを開始する前に、クラスタリング用のデータ セットを準備する必要があります。一般に、これらのデータ セットは次の条件を満たす必要があります:
Python では、pandas ライブラリを使用してデータの読み込み、準備、前処理を行うことができます。 pandas は、表形式のデータを簡単に処理できる DataFrame データ構造を提供します。以下は簡単な例です:
import pandas as pd # 读取csv文件 data = pd.read_csv('data.csv') # 对数据进行预处理(比如标准化) data = (data - data.mean()) / data.std()
その中で、最初に pandas の read_csv
関数を呼び出して csv ファイルを読み取り、次に読み取ったデータを正規化してデータを配置できるようにします。アルゴリズムに組み込まれます。
クラスタリング アルゴリズムの選択
Python では、選択できるクラスタリング アルゴリズムが多数あり、階層クラスタリング アルゴリズムもその 1 つです。ただし、データの特性とニーズに基づいて適切なアルゴリズムを選択する必要があります。
古典的な階層クラスタリング アルゴリズムには、最小距離と最大距離という 2 つの主なリンク方法があります。最小距離 (または単純な接続性) 法では 2 つの母集団で最も類似している点が比較され、最大距離 (または合計接続性) 法では 2 つの母集団で最も類似性の低い点が比較されます。さらに、2 つのグループ間の平均距離を使用して類似度を計算する、平均リンク法 (UPGMA アルゴリズムとも呼ばれます) もあります。 Python では、scipy ライブラリの linkage
関数を使用して階層的クラスタリングを実行できます。簡単な例を次に示します。
from scipy.cluster.hierarchy import linkage # 进行层次聚类 Z = linkage(data, method='single')
この例では、最小距離クラスタリングに linkage
関数を使用します。この関数の最初のパラメータはデータで、2 番目のパラメータは使用するリンク方法です。ここでは、最小距離のリンク方法である 'single'
方法を使用します。
ツリー構造の可視化
ツリー構造は階層的クラスタリング アルゴリズムの中核部分であり、樹状図を使用して可視化できます。 Python には視覚化のためのツールが多数提供されており、最も人気のある 2 つは 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 行列で、2 番目のパラメータは軸オブジェクトです。 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()
この例では、まずクラスタリング結果をデータ フレームに変換し、次に scatterplot
関数を使用します。 seaborn library 樹形図を描きます。 s
パラメータはポイントのサイズを調整するために使用されます。
クラスターの選択
階層型クラスタリング アルゴリズムでは、距離 (樹状図の高さ) に基づく方法と量に基づくクラスターの選択方法の 2 つがあります。距離に基づくとは、最大距離または最小距離をしきい値として設定し、樹状図を分割してクラスターを形成することを意味します。数値ベースとは、通常は最大距離または最小距離から開始して、特定の数のクラスターを選択することを指します。どちらの方法にも長所と短所があるため、ケースバイケースで選択する必要があります。
以下は、階層クラスタリングの結果をクラスタ リストに変換する簡単な例です:
from scipy.cluster.hierarchy import fcluster # 将层次聚类结果转换为簇列表 clusters = fcluster(Z, t=2.0, criterion='distance')
この例では、fcluster
関数を使用して階層クラスタリングの結果を変換します。クラスターのリスト。この関数の最初のパラメータは Z 行列、2 番目のパラメータはしきい値、3 番目のパラメータはしきい値のタイプを決定する基準です。
概要
この記事では、Python で階層的クラスタリング アルゴリズムを実装するための方法といくつかのベスト プラクティスについて説明しました。まずデータの準備について検討し、次にアルゴリズムの選択とツリー構造の視覚化について説明しました。最後に、クラスターの選択方法について説明します。これらの方法は、階層的クラスタリング アルゴリズムをより深く理解するのに役立ち、それを独自のデータに適用して有用な結論を導き出すことができます。
以上がPythonの階層型クラスタリングアルゴリズムの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。