Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibでデンドログラムの枝の長さを調整する方法

Matplotlibで階層的クラスタリングの結果を可視化する際、デンドログラム(樹状図)の枝の長さは、クラスタ間の距離を反映して自動的に描画されます。この記事では、SciPyとMatplotlibを使ってデンドログラムを作成し、その見た目や枝の長さを制御する基本的な方法を解説します。

手順

デンドログラムの枝の長さを調整しながら図を作成するには、以下の手順に従います。

  • 図のサイズを設定し、サブプロット間および周囲の余白を調整します。

  • 多変量正規分布からランダムなサンプル(ab)を生成します。

  • concatenate() メソッドを使用して、既存の軸に沿って配列を結合します。

  • 階層的クラスタリング(凝集型クラスタリング)を実行します。

  • figure() メソッドで新しい図を作成するか、既存の図をアクティブにします。

  • サブプロット配置の一部として、図に軸(Axes)を追加します。

  • dendrogram() メソッドを使用して、階層的クラスタリングをデンドログラムとして描画します。

  • 図を表示するには、show() メソッドを使用します。

コード例

from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 多変量正規分布からランダムサンプルを生成
a = np.random.multivariate_normal([0, 10], [[3, 1], [1, 4]], size=[2])
b = np.random.multivariate_normal([0, 10], [[3, 1], [1, 4]], size=[3])

# 配列を結合
X = np.concatenate((a, b), )

# 階層的クラスタリングを実行
Z = linkage(X)

# 図とサブプロットを作成
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

# デンドログラムを描画
dendrogram(Z, ax=ax)

plt.show()

出力結果

Matplotlibでデンドログラムの枝の長さを調整する方法

枝の長さをさらに調整するポイント

デンドログラムの枝の長さは、データ間の距離(ユークリッド距離など)に基づいて決まります。表示を調整したい場合は、以下の方法が有効です。

  • truncate_mode パラメータ:'lastp' を指定すると、最後の p 個のクラスタのみを表示でき、大きなデータセットでもコンパクトな図になります。表示するクラスタ数は p パラメータで指定します。

  • linkage() の method 引数:'single'、'complete'、'average'、'ward' などのクラスタリング手法を変更すると、マージ距離が変わり、枝の長さも変化します。

  • color_threshold パラメータ:指定した距離を超える枝の色分けを制御できます。

  • ax.set_ylim():縦縦軸の範囲を変更することで、枝の見え方を調整できます。

これらのパラメータを組み合わせることで、データの特性に合わせた読みやすいデンドログラムを作成できます。

  1. Matplotlibで開いているすべてのpyplotウィンドウを閉じる方法

    Matplotlibで複数の図(figure)ウィンドウを開いたまま作業していると、メモリの無駄遣いや表示の混乱につながることがあります。この記事では、close()メソッドを使ってpyplotのウィンドウを閉じるさまざまな方法を解説します。close()メソッドの使い方一覧Matplotlibでは、状況に応じて以下のようにclose()を使い分けることができます。plt.figure().close():特定の図ウィンドウを閉じます。close():引数なしで呼び出すと、現在アクティブな図を閉じます。close(h):Figureインスタンス h を指定すると、その図だけを閉じます。clos

  2. Matplotlibで凡例ボックスのサイズを調整する方法

    Matplotlibの凡例ボックスのサイズを調整するには、legend()メソッドのborderpad引数を使用します。borderpadの値を大きくするほど、凡例ボックス内の余白が広がり、ボックス全体のサイズも大きくなります。手順異なる線幅(linewidth)を持つ2つのリストを使って、line1とline2を作成します。図に凡例を配置し、凡例ボックスのサイズを調整するために、legend()メソッドでborderpad=2を指定します。図を表示するには、show()メソッドを使用します。サンプルコードfrom matplotlib import pyplot as plt plt.rcP