質問編集履歴
5
文章の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,6 +15,8 @@
|
|
15
15
|
こちらのサイトを参考に、指数加重移動標準偏差による外れ値の検出と除外を計画しました。
|
16
16
|
|
17
17
|
血流量の列をyに格納した状態で以下を実行しました。
|
18
|
+
|
19
|
+
```ここに言語を入力
|
18
20
|
|
19
21
|
df_csv_ewm = y.ewm(span=90).mean()
|
20
22
|
|
@@ -68,6 +70,8 @@
|
|
68
70
|
|
69
71
|
plot_outlier(ts)
|
70
72
|
|
73
|
+
```
|
74
|
+
|
71
75
|
|
72
76
|
|
73
77
|
これにより標準偏差から3.0倍以上外れているデータを外れ値として検出、描画を行うことができました。
|
4
文章の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -48,8 +48,6 @@
|
|
48
48
|
|
49
49
|
|
50
50
|
|
51
|
-
# 標準偏差から 3.0 倍以上外れているデータを外れ値としてプロットする
|
52
|
-
|
53
51
|
ax.fill_between(ts.index,
|
54
52
|
|
55
53
|
ewm_mean - ewm_std * threshold,
|
@@ -72,7 +70,7 @@
|
|
72
70
|
|
73
71
|
|
74
72
|
|
75
|
-
これにより外れ値
|
73
|
+
これにより標準偏差から3.0倍以上外れているデータを外れ値として検出、描画を行うことができました。
|
76
74
|
|
77
75
|
次に外れ値の除外を行おうと考えました。
|
78
76
|
|
3
誤字の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
python初心者です。
|
2
2
|
|
3
3
|
|
4
|
-
|
5
|
-
こちらのサイトを参考に、収集した時系列データのoutlierのプロットまで行うことができました。
|
6
|
-
|
7
|
-
しかしこの先の、外れ値を除外したデータフレームの再作成の手順がわかりません。
|
8
|
-
|
9
|
-
ご意見をいただければ幸いです。
|
10
4
|
|
11
5
|
### 前提・実現したいこと
|
12
6
|
|
2
具体的な操作の詳細を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,9 +1,103 @@
|
|
1
1
|
python初心者です。
|
2
2
|
|
3
|
-
|
3
|
+
|
4
4
|
|
5
5
|
こちらのサイトを参考に、収集した時系列データのoutlierのプロットまで行うことができました。
|
6
6
|
|
7
7
|
しかしこの先の、外れ値を除外したデータフレームの再作成の手順がわかりません。
|
8
8
|
|
9
9
|
ご意見をいただければ幸いです。
|
10
|
+
|
11
|
+
### 前提・実現したいこと
|
12
|
+
|
13
|
+
1秒ごとに皮下血流量の測定を行っております。
|
14
|
+
|
15
|
+
血流低下をアラートするシステムの実装を目指しております。
|
16
|
+
|
17
|
+
専用のセンサーにて血流量測定を行なっておりますが、体動によるノイズで流量がたまに異常高値となってしまうため、外れ値の検出と除外を行いたいと考えています。
|
18
|
+
|
19
|
+
[https://qiita.com/hoto17296/items/d337fe0215907432d754#%E5%81%8F%E5%B7%AE%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B]
|
20
|
+
|
21
|
+
こちらのサイトを参考に、指数加重移動標準偏差による外れ値の検出と除外を計画しました。
|
22
|
+
|
23
|
+
血流量の列をyに格納した状態で以下を実行しました。
|
24
|
+
|
25
|
+
df_csv_ewm = y.ewm(span=90).mean()
|
26
|
+
|
27
|
+
ts=pd.Series(y)
|
28
|
+
|
29
|
+
fig, ax=plt.subplots()
|
30
|
+
|
31
|
+
ax.plot(ts, label="original")
|
32
|
+
|
33
|
+
ax.plot(df_csv_ewm, label="ewma")
|
34
|
+
|
35
|
+
ax.legend()
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
def plot_outlier(ts, ewm_span=90, threshold=3.0):
|
40
|
+
|
41
|
+
assert type(ts) == pd.Series
|
42
|
+
|
43
|
+
fig, ax = plt.subplots()
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
ewm_mean = ts.ewm(span=ewm_span).mean() # 指数加重移動平均
|
48
|
+
|
49
|
+
ewm_std = ts.ewm(span=ewm_span).std() # 指数加重移動標準偏差
|
50
|
+
|
51
|
+
ax.plot(ts, label='original')
|
52
|
+
|
53
|
+
ax.plot(ewm_mean, label='ewma')
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
# 標準偏差から 3.0 倍以上外れているデータを外れ値としてプロットする
|
58
|
+
|
59
|
+
ax.fill_between(ts.index,
|
60
|
+
|
61
|
+
ewm_mean - ewm_std * threshold,
|
62
|
+
|
63
|
+
ewm_mean + ewm_std * threshold,
|
64
|
+
|
65
|
+
alpha=0.2)
|
66
|
+
|
67
|
+
outlier = ts[(ts - ewm_mean).abs() > ewm_std * threshold]
|
68
|
+
|
69
|
+
ax.scatter(outlier.index, outlier, label='outlier')
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
ax.legend()
|
74
|
+
|
75
|
+
return fig
|
76
|
+
|
77
|
+
plot_outlier(ts)
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
これにより外れ値の検出と描画を行うことができました。
|
82
|
+
|
83
|
+
次に外れ値の除外を行おうと考えました。
|
84
|
+
|
85
|
+
調べたところ「drop」「clear」などが使えるのではないかと思ったのですが、どの位置で実行すべきか構文の理解の問題かわかりませんでした。
|
86
|
+
|
87
|
+
outlierの定義の次に
|
88
|
+
|
89
|
+
ts.drop(outlier)など入力するのですが
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
AttributeError: 'Series' object has no attribute 'drop'
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
と表示されてしまいます。
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
外れ値を除外した状態のグラフ描画、また除外した状態にして他値との相関評価ができればと考えております。
|
102
|
+
|
103
|
+
ご意見いただければ幸いです。
|
1
参照元に飛べるようにしました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
python初心者です。
|
2
2
|
|
3
|
-
https://qiita.com/hoto17296/items/d337fe0215907432d754#%E5%81%8F%E5%B7%AE%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B
|
3
|
+
[https://qiita.com/hoto17296/items/d337fe0215907432d754#%E5%81%8F%E5%B7%AE%E3%81%8B%E3%82%89%E5%A4%96%E3%82%8C%E5%80%A4%E3%82%92%E6%A4%9C%E5%87%BA%E3%81%99%E3%82%8B]
|
4
4
|
|
5
5
|
こちらのサイトを参考に、収集した時系列データのoutlierのプロットまで行うことができました。
|
6
6
|
|