先日これを見て、自分も何かデータを使ってMachine Learningを体験してみたいと思っていたところ、こちらの記事で日経の株価データを使ってやられていたので、違うネタで自分もやってみることにしました。
環境
- Elasticsearch: 5.6.1
- kibana: 5.6.1
使用したデータは、ここの気象データを適当に地域を選んでcsvデータをダウンロードしました。
Elasticsearch/kibanaの設定
dockerを使ってやりました。最初docker-hubのを使ってやろうと思ったのですが、データを入れて計算させるぞって時にElasticsearch側でエラーがおきて上手く出来なかったので、elasticが出しているimageを使って環境を作ることにしました。
docker-compose.ymlは以下のようにしました。
1 version: '2'
2 services:
3 elasticsearch:
4 image: docker.elastic.co/elasticsearch/elasticsearch:5.6.1
5 container_name: elasticsearch
6 hostname: elasticsearch
7 environment:
8 - "http.host=0.0.0.0"
9 - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
10 - "xpack.security.enabled=false"
11 ports:
12 - 9200:9200
13 kibana:
14 image: docker.elastic.co/kibana/kibana:5.6.1
15 container_name: kibana
16 links:
17 - elasticsearch
18 ports:
19 - 5601:5601
10行目の「xpack.security.enabled=false」を追加しないとkibanaを起動した時にベーシック認証が掛かってしまうので、今回は明示的に外しました。
あとはElasticsearchにデータを入れたら準備は終わりです。
実際に動かしてみる
今回は「weather」というindexにてElasticsearchにデータを登録しました。
indexを設定したら、Machine Learningに移動します。
「Create new job」を選択し、次の画面で「Single Metric Job」を選択します。
そしてindexとしてweatherを選択します。
ここで計算方法(平均値、合計値など)、どのカラムを使用するか、そしてどのくらいの間隔でデータを見るかを設定します。今回3日おきの最高気温を見ることにしました(年々暑いですからね)。
すると以下のようなグラグがみれました。
そして「Create Job」を押すと計算処理が走り次のように結果異常値と判断された箇所が色つけされます
より詳細を見るために「View Results」ボタンを押すと細かい結果を見ることが出来ます。
所感
自分の場合、最初elaticのdockerを使わずに試行錯誤していたので、なかなか上手く環境が作れなかったが、素直にelasticの方を使ったら割とすんなりと出来ました。こうなると色々とデータを入れてみたくなりました。