[python] k-meansクラスタリングをするときはデータの規格化、標準化をする
概要
とある機械学習の問題に取り組んでいるときに、データをk-meansクラスタリングしてみた。ところが、どうもある一つのカラムの値に依存しすぎているように見えた。こうならないためには、事前にデータの大きさを揃えておかないといけない。
k-meansクラスタリングとは
k-meansクラスタリングは、データを複数のクラスタに分割するアルゴリズム。事前に指定した個数のクラスタ重心を作り、各データを最寄りのクラスタに分類する。
なぜ規格化が必要なのか
k-meansでのクラスタ分類において座標空間上のデータ点同士の距離を用いる。そのため、ある一つのデータだけ絶対値が大きいと、同じ分散でも点同士の距離は大きくなり、クラスタ分類の計算に影響を与える。
実際に僕が使用していたデータはカラムA、C、Dが0~2の範囲を取り、カラムBは1000~3000の範囲を取るようなデータでした。規格化を忘れてクラスタリングをしてみたら、カラムBにだけ影響を受けているようなクラスタリングとなっていました。今回はすぐおかしいことに気づいたので良かったですが、、、
結論
kmeansクラスタリングを行う前は必ず規格化、標準化をしましょう。そして、クラスタリングの結果を必ず確認しましょう。
最新記事
すべて表示概要 pythonでデータ解析を行っている。解析自体はpandasを用いて行い、最終結果はpandas.DataFrameの形式で保持されている。 この結果を他のアプリケーションで利用するため、json形式でファイル出力したい。 やり方 1...
現象 raspberry piでfirestoreをimportしようとするとタイトルのエラーが発生。 from from firebase_admin import firestore ImportError: Failed to import the Cloud...
概要 フィッティングを行いたい場合、pythonならばscipy.optimize.leastsqなどでできます。 しかし、フィッティングを行う場合、フィッティングパラメータに条件を付けたい場合も多々あります。 例えば、下記のようにパラメータa、bは共に正の範囲で最適な値を...
Comentários