質問するログイン新規登録

質問編集履歴

1

修正

2019/11/05 02:15

投稿

mi2
mi2

スコア63

title CHANGED
File without changes
body CHANGED
@@ -4,19 +4,8 @@
4
4
  例えば、下記のようなデータがあったとします。
5
5
 
6
6
  # データ
7
+
7
8
  ```
8
- id time feature1 feature2 feature3
9
- a 2019-01-04 16:03:00 14 32 88
10
- a 2019-01-04 16:03:00 12 21 16
11
- a 2019-01-04 16:03:00 13 15 44
12
- a 2019-01-04 16:04:00 11 36 45
13
- a 2019-01-04 16:04:00 13 15 44
14
- a 2019-01-04 16:04:00 18 35 53
15
- b 2019-01-04 16:04:00 17 21 36
16
- b 2019-01-04 16:04:00 19 93 23
17
- b 2019-01-04 16:04:00 25 27 55
18
-
19
- ```
20
9
 
21
10
  同一IDで見て、同時刻なものは
22
11
  idがaの場合、16:03の3データと16:04の3データ、
@@ -24,7 +13,7 @@
24
13
 
25
14
  # 作成したいデータフレーム
26
15
  ```
27
- id time クラスタ数 クラスタ間距離
16
+ id time a b
28
17
  a 2019-01-04 16:03:00 1 None
29
18
  a 2019-01-04 16:04:00 4 10.5
30
19
  b 2019-01-04 16:04:00 3 20.1
@@ -34,38 +23,10 @@
34
23
  # 試したこと
35
24
  任意のdfに対して以下のコードで、クラスタ数とデンドログラムは取得できます・
36
25
 
37
- ```
38
- import matplotlib.pyplot as plt
39
- import pandas as pd
40
- import numpy as np
41
- from scipy.cluster.hierarchy import linkage, dendrogram, fcluster
42
- from sklearn.datasets import load_iris
43
-
44
- # ウォード法×ユークリッド距離
45
- linkage_result = linkage(df, method='ward', metric='euclidean')
46
-
47
- # クラスタ分けのためのしきい値の設定
48
- threshold = 0.8 * np.max(linkage_result[:, 2])
49
-
50
- # 階層型クラスタリングの可視化
51
- plt.figure(num=None, figsize=(5, 5), dpi=100, facecolor='w', edgecolor='k')
52
- dendrogram(linkage_result, color_threshold=threshold)
53
- plt.show()
54
-
55
- # クラスタリング結果の値を取得
56
- clustered = fcluster(linkage_result, threshold, criterion='distance')
57
-
58
- # クラスタ数
59
- print(np.max(clustered))
60
- ```
61
-
62
26
  # 困っていること
63
27
  ・ID/時間ごとに
64
- ・クラスタ間の距離
28
+ ・クラスタ間
65
29
 
66
- groupbyを行った上でクラスタ数・距離の2つの指標にアクセスし、
67
- 空のデータフレームに追加していくようなイメージかと思っておりますが、
68
- 少々込み入ってうまく表現できず困っております。
69
30
 
70
31
  大変恐縮ではございますが、お知恵を拝借できましたら幸いです。
71
32
  何卒よろしくお願い申し上げます。