Hatena::ブログ(Diary)

盆栽日記

2016-06-22

Jupyter notebook のnbextensionsを入れようとしたらうまくいかなかったのでAnaconda Extensionsを入れた話

Anaconda経由で入れたjupyter notebookのnbextensionを使いたい。

特に、見出しをtocでまとめてくれる"Table of Contents (2)"を使いたい。

しかし以下のようなメッセージが出て、http://localhost:8888/nbextensions/ にアクセスできない。

"Config option 'nbserver_extensions' not recognized by 'NotebookApp' "

色々調べていたらAnaconda Extensionsを使えばいいということがわかった。

https://github.com/Anaconda-Platform/anaconda-nb-extensions

以下のコマンドでインストールできる。

conda install anaconda-nb-extensions -c anaconda-nb-extensions

あとはhttp://localhost:8888/nbextensions/ にアクセスすればよい。

2016-06-13

cell magicとline magic

Jupyter notebookというかIPythonのrmagicを使ってて、%Rと%%Rの違いがわからなかったので調べた。

%という表記の問題でやたらググりにくいのでメモしておく。

結論から言うと、%1つだとline magic、%%2つだとcell magicである。

magic function

IPythonにはmagic functionと呼ばれるものがある。

IPython組み込みのものだと以下にリストアップされている。

http://ipython.readthedocs.io/en/stable/interactive/magics.html

この中で%1つから始まるコマンドがline magic、%%2つから始まるコマンドがcell magicである。

line magic、cell magicはそれぞれmagic functionの適用範囲で分かれている。

line magicは同一行のコマンドのみに適用され、cell magicは同一セルのコマンドに適用される。

詳しいことは以下のチュートリアルに書いてあるので適宜参照のこと。

http://ipython.readthedocs.io/en/stable/interactive/tutorial.html#magic-functions

お元気で。

2016-04-21

歩数データから行動パターンを抽出する話

この1年ほどfitbitで歩数データを取り続けている。

最近、歩数データは1日よりも小さい単位(1分、15分)で取得できることを知ったので、それを利用して日々の行動をパターン化したい。

同時に手持ちの睡眠データと組み合わせて、行動パターンとの関連も見たい。

睡眠データはSonyのSmartband2で取得している。

なお、コードも含めた結果はRPubsにアップしたので細かい話をそちらを確認してほしい。

http://rpubs.com/dichika/stepandsleep

可視化した結果

歩数データは1時間ごとの集計をLDAでもって5グループに分けた。

LDAを用いた理由はこの研究会でLDAを歩数パターンに適用している発表があったのでその追試の意味合いが大きい。

5グループへの分類が終わったら、各グループの特徴を時間別の分布、総歩数、睡眠の質(入眠後3時間以内の深い眠りの割合)で確認する。

f:id:dichika:20160421201716p:image

分類した5つのグループおよび総歩数がどのように分布しているかカレンダープロットで確認する。

こちらは5つのグループをカレンダープロット可視化したもの。

f:id:dichika:20160421215653p:image

こちらは総歩数をカレンダープロット可視化したもの。

f:id:dichika:20160421215654p:image


得られた知見

  • LDAの結果をカレンダープロットで確認すると、Group1は平日パターン、Group3,5は休日パターンのように見える。Group2,4は夜間の歩数が多いので飲み会パターンか(私の勤め先はホワイトなので深夜に帰宅することはまず無い)。
  • 総歩数はどのパターンも中央値はあまり変わらない。休日パターン(Group5)は左に裾をひいてるので概して歩数が少なくなっている印象。
  • 平日パターン(Group1)と休日パターン(Group5)の眠りの質(per_D_180)を比べると、前者の方が良さそう。とはいえ、ばらつきも大きい。総歩数のデータと併せて考えると、良い睡眠に一定の運動量は必要だが、それが十分条件ではなさそう。

知見をふまえて決定木でモデリング

もう少し知見を定量的に深めたい。

手持ちの睡眠データには「就寝前2時間以内に食事をしたか(shokuji)」「就寝前1時間以内にブルーライトを発するような装置を注視したか(BL)」「寝る1時間前に蛍光灯をつけたか(Keikou)」がそれぞれ0/1(いいえ/はい)で含まれている。

f:id:dichika:20160421201717p:image

結果をみるとブルーライトを注視しないと圧倒的に睡眠の質が良い。ここでいうブルーライトを発するような装置はスマホやPCである。寝る直前までtwitter眺めるのはやめよう。

またばらつきは大きいものの、歩数パターンのGroup1と3は他のグループに比べて睡眠の質が良い。

Group1は主に平日に現れる歩数パターンなので、平日の方が休日より睡眠の質が良いのか。

また悪い歩数パターンの中でも約8,000歩を超えると多少は睡眠の質が良くなっている。 当面の目標値は8000歩にしておこう。

まとめ

fitbitはカギにつけて持ち歩いているだけなのでそれで自分の行動パターンが見えてくるのは面白い。

みなさんもじぶんマイニング(beroberoさん命名)やってみましょう。

Enjoy!!

2016-04-08

テロップをつけた画像に落書きする

以前captionパッケージを使ってテロップを自動で画像につける話をした。

f:id:dichika:20160315095320p:image

しかしこういった画像を見ているとどうしても落書きしたくなる。

f:id:dichika:20160408221832p:image

ペイントソフトを開いて落書きしてもいいのだがここはシームレスにRからやりたい。

ということでrakugaki関数をcaptionパッケージに追加した。

以下のように実行するとRStudio上でviewerペインに画像が表示されて落書きできる。

library("caption")
rakugaki("http://cdn-ak.f.st-hatena.com/images/fotolife/d/dichika/20160315/20160315095320.png")

f:id:dichika:20160408223208p:image

保存したい場合は左上のshow in new windowを押してブラウザで改めて開いた後、右クリック等で画像を保存してほしい。

ただしこの時viewer上で書いていた落書きは消えるので、保存したい場合はブラウザで開いた後に落書きをすると良い。

学び

  • viewerに画像を表示する時はbase64でエンコードしないと表示されなかった。
  • 今回はこの記事に倣ってshinyを使ったが、htmlwidgetsパッケージを使えばDiagrammeRパッケージのようにviewerで完結させられそうな感触あり。

Enjoy!!!

2016-03-25

いい感じの時系列プロット

dygraphsパッケージのことである。

えっ、いまさらdygraphs?ナンデ?と思われる向きもあるだろうが、最近、私の記憶がやばい。

昔は記憶に雑なクエリ(例:Rでいい感じに時系列プロットかけるパッケージ)を投げても、最適な結果がスッとでてきたのが最近は無理。

もう「おじいちゃん、ここに通帳と印鑑はいれてますからね!」ってレベルで情報をひとまとめにしておかないと思い出せない。

ということで、自分のブログに情報を集約しておく。

今日はdygraphsパッケージの名前が思い出せなかったのでメモしておく。

データフレームで放り込むと怒られるので、xts形式に変換してから使うこと。

library("dygraphs")
df_xts <- xts::xts(df[,c("per_D_180", "per_D_total")], order.by=as.Date(df$date))
dygraph(df_xts)

これからも思い出せなかったパッケージをメモしていくことにする。