u++の備忘録

【広島旅行記1日目】花より団子

広島駅

 11時頃、新幹線で広島駅に到着しました。
f:id:upura:20170920192320p:plain

 ホームからエスカレーターを降りると、何やら人だかりが。運の良いことに、カープの選手らが凱旋するとのことでした。
www.asahi.com

 上手く写真は撮れませんでしたが、大変な盛り上がりでした。
f:id:upura:20170920192618p:plain

宮島

 ひたすら食べてました。
f:id:upura:20170920192747p:plain
f:id:upura:20170920192806p:plain

広島城

 名古屋城に比べ、水堀の幅が広いのが印象的でした。
f:id:upura:20170920192849p:plain

 ここでも食べました。
f:id:upura:20170920193604p:plain

縮景園

 心穏やかな気持ちになります。
f:id:upura:20170920194338p:plain

お好み村

 お好み焼き屋さんが集まる「お好み村」の2階にある「文ちゃん」というお店に行きました。「お薦めシーフード全部入(肉・玉子・えび・いか・そば又はうどん)」を1,350円で。美味い。ビールもキンキンで最高。
f:id:upura:20170920192927p:plain
f:id:upura:20170920192939p:plain

A Tour of GoでGo言語に入門した話

完全に周回遅れだが、Go言語に入門しようと思った。
The Go Programming Language

既に実務で使っている友人にお勧めされた"A Tour of Go"というサイトで一通り勉強した。

例えばニュートン法などを実装したが、かなりの速度が出るので、結構気に入った。

package main

import (
     "fmt"
     "math"
)

func Sqrt(x float64) float64 {
     z := 1.0
     count := 0
     for {
          if math.Abs((z * z - x)/2 * z) < 0.00001 {
               fmt.Println(count)
               return z
          }
          z = z - (z * z - x)/2 * z
          count ++
     }
}

func main(){
     fmt.Println(Sqrt(2))
}

github.com

データ呼び出しツール

RESTful API

RESTの原則に則って構築されたWebシステムのHTTPでの呼び出しインターフェースのこと。RESTとはREpresentational State Transferの略で、分散型システムにおける複数のソフトウェアを連携させるのに適した設計原則の集合、考え方のこと。

qiita.com

Elasticsearch

Elasticsearchは、様々なユースケースを解決する、分散型RESTful検索/分析エンジンです

www.elastic.co

Redshift

Amazon Redshift は高速で完全マネージド型のデータウェアハウスです

Amazon Redshift(ビッグデータ活用に適したデータウェアハウス)|AWS

BigQuery

BigQuery は Google が提供するフルマネージドのエンタープライズ向けアナリティクス データ ウェアハウスです

cloud.google.com

Redash

redashは大雑把にいえばMySQLなどのデータソースに接続して、 ウェブビュー上からの操作で表やグラフを作成し、 ダッシュボードに並べて表示することができるツールだ

blue1st-tech.hateblo.jp

Twitter提供のRパッケージ{AnomalyDetection}で日経平均株価の異常検知

データセット

日経平均株価のデータは、以下のサイトからダウンロードしました。2007年以降のデータをダウンロードし、結合して一つのcsvファイルを作ります。
http://k-db.com/indices/I101/1h

日付の列の処理

ダウンロード時点では"2007/01/01"のような形式で日付が入っていました。
rで日付を処理するには、決まった形式になっている方が都合が良さそうだったので、この時点でExcelの機能で整形しました。

f:id:upura:20170912104815p:plain

パッケージのインストール

install.packages("devtools")
devtools::install_github("twitter/AnomalyDetection")
library(AnomalyDetection)

実行

パッケージとデータセットの読み込み

library(AnomalyDetection)
df = read.csv("nikkei_index.csv")
data = data.frame(as.POSIXlt(df[,1]),df[,4]) # 終値を利用
plot(data, xlab = "date", ylab = "ending price")

f:id:upura:20170912105226p:plain

異常検知

res <- AnomalyDetectionTs(data, max_anoms=0.02, direction='both', plot=TRUE)
res

本来ならば、$anomsに異常と判定された行が抽出されるのですが、今回は全て異常ではないという判定だったようです。
確かにプロット結果を見ても、ある程度自然な推移のようにも捉えられます。

f:id:upura:20170912105314p:plain

終わりに

今後はより大規模なデータセットで試してみたいと思います。

github.com