前提・実現したいこと
tslearnを使った時系列データのk-means法によるクラスタリングにおいて、ユークリッド距離からクラスタリングをしたい考えています。
しかしながら、現在、ユークリッド距離からクラスタリングするためのデータの前処理の段階でつまづいています。
ユークリッド距離でクラスタリングする前に、動的時間伸縮法を用いたクラスタリングをしていました。その際には、下のデータ(※1)のように配列内の要素数が異なる場合には”nan”を入れえう前処理をして、クラスタリングしていました。(動的時間伸縮法では、上手く分類出来ませんでしたが、、、)
しかしながら、ユークリッド距離からクラスタリングする際には、空白文字(”nan”)はエラーとなってしまいます
以下のデータ(※1)から、”nan”を取り除いて、ユークリッド距離からクラスタリングを実行できるデータを作成したいです。
理想は、※1のデータのように3次元の配列にしたいのですが、nanを取り除くと要素数が異なってしまう為、現実的には厳しいと思います。。。
他に、何か良い方法がありましたら、教えていただけますでしょうか。
よろしくお願いします。
※1 動的時間伸縮法で使用したデータ(shape=(1200, 202, 2)) [[[1978.13506899 1038.26637706] [2321.18041226 1106.97860927] [2317.69722515 1107.01611793] ... [ nan nan] [ nan nan] [ nan nan]] ・ ・ ・ [[1921.43042307 1049.15807708] [2194.87333696 1104.94944899] [1920.8201568 1049.00151147] ... [ nan nan] [ nan nan] [ nan nan]]]
tslearnを使った時系列データのk-means法によるクラスタリングのコード
Python
1kmeans = TimeSeriesKMeans(n_clusters=5,#クラスタ数 2 metric="euclidean",#ユークリッド距離 3 n_init=5, 4 verbose=True, 5 max_iter_barycenter=100, 6 ) 7 8pred = kmeans.fit_predict(Points)※
※Pointsは、numpy配列(3次元)のデータの予定(理想は※1のデータから”nan”を削除したもの)
試したこと
リスト型でデータの前処理も試したが、上手くいかなかった。
補足情報(FW/ツールのバージョンなど)環境
Python(3.9)
tslearn(0.5.2)
Jupiternotebook(6.4)
回答1件
あなたの回答
tips
プレビュー