intellista

engineer's notes about application development, data analysis, and so on

Pythonでk-meansによるクラスタリング


Pythonでk-meansによるクラスタリングを実施してみました。
データの性格から、あまり面白い結果にはならなかったのですが(散布図にすると人間が見ても分類できるようなデータだったので...)、実装の練習としてはちょうど良かったです。

下記のような記述で、簡単にクラスタリングできるのはちょっと衝撃でした。

from sklearn.cluster import KMeans

km = KMeans(
    n_clusters=5, # クラスタ数
    init="k-means++", # 初期値の与え方(randomかk-means++のいずれか)
    n_init=10 # k-meansの実行回数
)

km.fit_predict(df)

上記で分析まではできますが、分析結果を可視化するにはMatplotlibなどに渡す必要があります。
このあたりは、ネット検索やPythonエンジニア育成推進協会の推薦図書でもある「Pythonによるあたらしいデータ分析の教科書」を見ながら実装しました。

Pythonによるあたらしいデータ分析の教科書

上記図書は、データ分析に必要な数学のおさらい(微積分、行列、確率統計、の知識のうち、データ分析での実装に必要そうな初歩)が簡単にまとまっているのと、Numpy, pandas, Matplotlib, scikit-learnといった定番ライブラリの事始めがまとまっている点が気に入っています。
なお、2021年3月末までなら、Pythonエンジニア育成推進協会で受検宣言を報告すると無料でもらえるキャンペーンをやっているようです。
www.pythonic-exam.com

先月の2/19にconnpassでデータ分析ハンズオンに参加しまして、そこでもk-meansを取り扱っていました。
そのおかげもあって、実装イメージがついていた点が役に立ちました。
ハンズオンのときは早々に脱落していたのですが(pandasは初心者、Matplotlibやscikit-learnは触ったことなし、という初心者だったので...)、うまくいかなくても一度経験しておくというのは良いことだと思いました。

なお、データ分析のデファクトスタンダードのひとつとなっている技術にPythonがあります。
Python、Pandas、データ分析、に関するコツなどを次の記事にまとめてありますので、是非読んでみてください!
intellista.hatenablog.com