python初心者なので不手際があったら申し訳在りません
時系列データの軌跡をクラスタリングしたいです(手法は問いません)
以下のようなツイッターのデータがあります(実際はcsvファイルを読み込んでいるのですが、今回は自身で作成したdfで説明します)
各カラムのデータ型は実際のcsvファイルを読み込んだものと同じです
df = pd.DataFrame({ 'tid' : [1, 2, 3, 4, 5, 6, 7],
'userid' : [1, 1, 1, 2, 2, 3, 3],
'latitude' : [1.1, 2.2, 3.3, 4.4, 9.9, 9.8, 9.9],
'longitude' : [11.1, 22.2, 33.3, 44.4, 99.9, 99.8, 99.9],
'date' : ['2017-01-01', '2017-01-01', '2017-01-05', '2017-01-01', '2017-01-02', '2017-01-02', '2017-01-02',],
'text' : ['a', 'b', 'c', 'd', 'e', 'f', 'g'],
'label': [1, 1, 2, 3, 4, 5, 5] })
ユーザの一日の軌跡を追いたかったので、dateを一日区切りでuseridごとにlabelを付与しました
上記のデータですとuserid1のユーザは3つ、ツイートをしていますが、そのうち2017-01-01のものが2つ2017-01-05ものが1つあるので各データに[1,1,2]というlabelを付与しました
上記のデータの緯度経度情報に基づき、labelごとに距離の近い軌跡をクラスタリングしたいです
今回の場合ですとlabel4とlabel5の軌跡(label4は点ですが)は実空間上でも近いと思われるので、同じクラスタになると考えられます
例としてクラスタ数を2とすると、最終的に以下のうようなカラムを付与してくれると嬉しいです
df = pd.DataFrame({ 'tid' : [1, 2, 3, 4, 5, 6, 7],
'userid' : [1, 1, 1, 2, 2, 3, 3],
'latitude' : [1.1, 2.2, 3.3, 4.4, 9.9, 9.8, 9.9],
'longitude' : [11.1, 22.2, 33.3, 44.4, 99.9, 99.8, 99.9],
'date' : ['2017-01-01', '2017-01-01', '2017-01-05', '2017-01-01', '2017-01-02', '2017-01-02', '2017-01-02',],
'text' : ['a', 'b', 'c', 'd', 'e', 'f', 'g'],
'label': [1, 1, 2, 3, 4, 5, 5]
'cluster' : [1, 1, 1, 1, 2, 2, 2] })
参考サイトです
http://ksknw.hatenablog.com/entry/2017/03/26/234048
このサイトではDTWを気温に応用して、気温的に似た地域を数値として出力しています
私も似たようなことを行いたいので、参考にしているのですが、各データの緯度経度を用いて軌跡ごとにユークリッド距離を算出しクラスタリングを行うところで詰まっています
説明下手ですみませんが、どうぞよろしくお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/11 09:15