【pythonチートシート】階層的クラスタリングとデンドログラムの作成方法

スポンサーリンク
この記事は 約6 分で読めます。

今回は、Pythonで階層的クラスタリングを使ったデンドログラム図の作成方法について、ご紹介します。

なつめ
なつめ

本記事は「ある程度他のプログラミング言語の経験はあるけど、あまりPythonは使ったことがない人を対象としたチートシート」です。私自身の備忘録的な感じでまとめています。

他にもPythonのおすすめ記事をこちらにまとめました。

なつめ黒猫
なつめ黒猫

星の数は記事で紹介しているプログラミングの難易度を示しているよ。自分のレベルに合わせて読んでみてね。

また、Pythonなどのプログラミングを本格的に勉強したのであれば、オンラインでも受講可能な「TECH  ACADEMY」がオススメです。

専属のアドバイザーがついてくれるので、短期集中で必要なプログラミング技術を身に着けることができます。

なつめ黒猫
なつめ黒猫

「TECH ACADEMY」よるスキルアップで、もう一段上のエンジニアへステップアップしましょう!

理系王子
理系王子

また、AI開発や人工知能アプリに特化してもっと勉強したい人、AIエンジニアの資格取得や転職にチャレンジしてみたいという方には、Aidemyがおすすめです。こちらの記事で詳しく解説しています。

 

人工知能AIやpythonプログラミングを初心者でも学べるオンライン学習Aidemyの評判
人工知能AIに特化したオンラインのプログラミングスクール「Aidemy」プレミアムの評判や口コミ、Python言語を使った学習内容や実際に作るAIアプリ例、他のスクールとの受講料や期間を比較して、分かりやすくご紹介します。

また、AIで転職したい人はこちらの記事もおすすめです。

高収入なAIエンジニアに転職するならPythonが有利な4つの理由
AIエンジニアに転職するならプログラミング言語「Python」を勉強した方が有利な理由をご紹介しています。
AIエンジニアの求人がさらに好待遇になる4つの理由
AIエンジニアが好待遇で求人される理由についてご紹介します。
スポンサーリンク

階層的クラスタリングのチートシート

  • scipyからモジュールをimport
    • from scipy.cluster.hierarchy import dendrogram, linkage, fcluster
  • linkageを使ってクラスタリング
    • method:single, average, complete, weighted, wardなど
    • metric:braycurtis, canberra, chebyshev, cityblock, correlation, cosine, euclidean, hamming, jaccardなど
  • dendrogramで図を描画
    • labels:データラベル
    • orientation:向き
    • color_threshold:色分けの閾値

階層的クラスタリングのやり方

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

# データ生成
data_labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
df = pd.DataFrame(np.random.rand(100*10).reshape(10,100), index = data_labels) # 乱数で10行100列のデータを模擬

# クラスタリング(ウォード法、ユークリッド距離)
Z = linkage(df, method = "ward", metric = "euclidean")

# デンドログラム図の描画
fig = plt.figure()

dendrogram(Z,
labels = data_labels, # データラベルの設定
orientation = 'right', # デンドログラム図を横向きにする
color_threshold = 4) # デンドログラム図の色分けの閾値
plt.show()

スポンサーリンク

linkageの結果の理解

linkageの計算結果(上記では変数z)はこんな感じのは行列になります。

print(z)

# array([[ 4. , 5. , 3.40106098, 2. ],
# [ 2. , 6. , 3.75083259, 2. ],
# [ 0. , 8. , 3.82715696, 2. ],
# [ 9. , 11. , 3.89128773, 3. ],
# [ 1. , 10. , 4.11740704, 3. ],
# [ 3. , 12. , 4.12783319, 3. ],
# [ 7. , 14. , 4.40790915, 4. ],
# [15. , 16. , 4.63592748, 7. ],
# [13. , 17. , 4.82317537, 10. ]])
  • 列項目
    • 1〜2列目:元々のデータフレームのindexを表示
    • 3列目:データ1とデータ2の距離(今回はユークリッド距離)
    • 4列目:グルーピングしたデータの個数
  • 行項目
    • 元データのindex数を超えるindex(今回は10以上の値)は、グルーピングされたデータの集合を示す
    • グルーピングされたデータの集合との距離を計算する場合、グループ内の重心を使う
スポンサーリンク

まとめ

今回は、Pythonで階層的クラスタリングを使ったデンドログラム図の作成方法ついてまとめました。

なつめ
なつめ

なんとなく、dendrogram図が書けると分析した感が出ますね。

Pocket

コメント