top of page

[python] k-meansクラスタリングをするときはデータの規格化、標準化をする


概要


とある機械学習の問題に取り組んでいるときに、データをk-meansクラスタリングしてみた。ところが、どうもある一つのカラムの値に依存しすぎているように見えた。こうならないためには、事前にデータの大きさを揃えておかないといけない。



k-meansクラスタリングとは


k-meansクラスタリングは、データを複数のクラスタに分割するアルゴリズム。事前に指定した個数のクラスタ重心を作り、各データを最寄りのクラスタに分類する。


なぜ規格化が必要なのか


k-meansでのクラスタ分類において座標空間上のデータ点同士の距離を用いる。そのため、ある一つのデータだけ絶対値が大きいと、同じ分散でも点同士の距離は大きくなり、クラスタ分類の計算に影響を与える。

同じ10%の差でも点同士の距離は大きく異なる

実際に僕が使用していたデータはカラムA、C、Dが0~2の範囲を取り、カラムBは1000~3000の範囲を取るようなデータでした。規格化を忘れてクラスタリングをしてみたら、カラムBにだけ影響を受けているようなクラスタリングとなっていました。今回はすぐおかしいことに気づいたので良かったですが、、、



結論


kmeansクラスタリングを行う前は必ず規格化、標準化をしましょう。そして、クラスタリングの結果を必ず確認しましょう。

最新記事

すべて表示

[Python]pandas.DataFrameをjsonで出力

概要 pythonでデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...

[Python] 条件付きでフィッティングをする

概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...

Comments


あなたの買い物をサポートする
アプリ Shop Plan

iphone6.5p2.png

​いつ何を買うかの計画を立てられるアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

「後で読む」を忘れないアプリ ArticleReminder

気になった​Webサイトを登録し、指定時刻にリマインダを送れるアプリです

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png
bottom of page