D3をはじめようを快適に写経するためにlivereloadを使って更新時にブラウザをリロードする

日本語の入門書はD3をはじめようがあるけど、ほんのさわりだけなので、日本語の簡単なチュートリアルが読みたいというヒト以外には積極的に読む必要性を感じないかな。ただ、あのイディオム(selectAll().data().enter()ってやつ)とメソッドチェインに慣れてないのだったら読んだほうがいいのかなぁ。日本語のほうがわかりやすいしなぁ。

ちゃんと読むつもりならInteractive Data Visualization for the Webのほうが良いと思う(まだ書評かいてないけど)。

ProductName Interactive Data Visualization for the Web
Scott Murray
Oreilly & Associates Inc / 2997円 ( 2013-04-02 )


javascriptを書き写すだけなのはつまらなかったのでcoffeescriptで書いたのと、coffee --watchだとコンパイル時にブラウザリロードしないのでlivereloadを使った。

Guardfileはこんな感じ。更新されたファイル名をfuncに渡せないのでハードコードしている。

#!/usr/bin/env python

from livereload.task import Task
import logging

def coffee():
    from subprocess import Popen, PIPE
    argv = ["/Users/kzfm/.nvm/v0.8.10/bin/coffee", "-c", "-m", "js/mean.coffee"]
    p = Popen(argv, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    stdout, stderr = p.communicate()
    if stderr:
        logging.error(stderr)

Task.add('js/mean.coffee', coffee)

あとは編集してセーブすると自動コンパイルして、ブラウザもリロードしてくれる。

livereload_coffee

izooで爬虫類を抱っこしまくってきた

子供の春休みと我々のお疲れ会を兼ねて東伊豆に泊まりにいってきた。

ついて早々、磯にいそいそと出かけて行ってヤドカリ捕りをしていた。

1364712736 1364712734

夕食、舟盛りっぽいもの

1364712738

鰆と金目鯛の煮付け

1364712739 1364712741

八寸

1364712742 1364712744

温泉卵とかと、金目鯛の味噌漬けを焼いたもの

1364712745 1364712747

翌日はIZooへ。体験型と銘打っているだけあって、いろいろすごかった。

1364712750

まずはパイソン、右はカエル。ほぼ全て爬虫類です。

1364712752 1364712753

昔流行ったエリマキトカゲだが、抱っこできます。右が娘が抱えているエリマキトカゲ。

1364712755 1364712757

蛇とかサソリとか色々いた。

1364712758 1364712760

カメも触りまくり、トカゲも抱っこできる

1364712761 1364712763

カメに餌やりもできる。

1364712765

爬虫類好きにはたまらない施設だな。

次の静岡Developers勉強会は入門機械学習の読書会です

前回のHTML5から本が決まらず1年以上のブランクがありましたが、入門機械学習を読んでいくことになりました。

1364714609

ひと通り読んだところ、こんな感じの本なので、機械学習に興味があるヒトには面白いかなと。

というわけで参加をお待ちしています。

Cscope

この間の三島Haskellで@karky7にcscopeを教えてもらったので、朝からいじっていたのだけどetagsとの違いがよく分からなかった。規模がでかいとこっちのほうがいいのだろうけど、.emacsにいちいち書かないといけないのが面倒くさそうだなと思ったが、virtualenvで作った仮想環境のlibを登録してしまえばいいのかなぁ。

pydocかpypiで気軽にソースコードが見られるようになっていればなぁと思う

HaskellのHackageだと関数ごとにソースコードへのリンクがついていて便利。

Pythonで似たことやりたい時には、(pypi上ではソースコードを読めないので)、pydoc -pでブラウザからアクセスすればいいと思うのだけど

  • htmlがケバい
  • トップにもとのファイルの参照があるだけで個別のメソッドのコードを気軽に参照出来ない
  • しかもfile://のリンクはchromeでは効かない(解決方法)し、サーバーだとアクセスできなくて面倒くさい

という状況なのでgit cloneしたコードをtmpディレクトリに置いてEmacsでetags付けて参照しするのが僕の最近のデフォなのだけど、さすがに効率悪いよなぁと思っているので改善したい。

なんかいい方法はないものか。

型システム入門がきた

頑張って読んでいこうかと。

1364542311

ProductName 型システム入門 −プログラミング言語と型の理論−
Benjamin C. Pierce
オーム社 / 7140円 ( 2013-03-26 )


因果とは脳の所作

学生向けの脳の講義を本にまとめたもの。

因果とは脳の錯覚

ProductName 単純な脳、複雑な「私」
池谷裕二
朝日出版社 / 1785円 ( 2009-05-08 )


  • 基底核が直感を扱う
  • パターンコンプリーションの謎
  • 匂いは視床を経由せず直接大脳皮質にとどく
  • 自由意志は存在よりも知覚

入門機械学習

入門機械学習は機械学習を使いたいヒトのための入門書であり、作りたいヒトのための本ではありませんので統計の本にあるような数式は全然出てきません。(これはこれでベイズの定理とか正則化とか説明できているのか?と疑問に思うところはあるのだが。)

お手軽にどういう問題の時にどういう手法を選択すればいいか?がわかるような内容になっているので、これはこれでありなのではなかろうかと。

とりあえず使ってみて機械学習がどんな感じのものなのかという感触をつかめばよいと思う。

事例としては

  • 電子メールのスパム判定
  • アマゾンのオススメみたいなの
  • ウェブのアクセス数を予測する
  • twitterのソーシャルグラフを分析する

といった感じで万人にオススメできるような内容になっています。

ProductName 入門 機械学習
Drew Conway
オライリージャパン / 3360円 ( 2012-12-22 )


ちょっと残念なのは教師なし学習(クラスタリング)の手法(PCAとかMDS)の説明が超適当で、クラスタリングの素晴らしさについてほとんど触れられていないところと、SVMがおまけ程度でSVMのお手軽さがわからないのと、みんな大好きRandom forestに触れられていないあたりかなぁ。

それから本書のコードはRで書かれているのだけど、本書の内容の範囲だったらRなんて代入が<-になったjavascriptのようなものなので、ちょっとjavascriptを書いたことのあるプログラマーであれば、少ない労力で機会学習の基礎が学べて費用対効果的にかなりお得じゃないかと思う。

あとはggplot2のグラフ描画の快適さは癖になる。

本書を読んで

  • より使いヒトはCRANのライブラリ漁りをすればいいし
  • 作ってみたくなったヒトは王道のPRMLの方向に進んでいけばいい

かなと思う。

おまけ

ソーシャルグラフの分析にGephiをつかっていたのだけどCYtoscapeとの違いがちょっと気になったのであとで調べてみるかもしれない。

git pullしたらSupervisor+Gunicornをrestartする設定

gitでpullしたらgunicorn restartできないかなと思って調べた。

supervisorctl status gunicorn | sed "s/.*[pid ]\([0-9]\+\)\,.*/\1/" | xargs kill -HUP

でrestartできるので、これを.git/hooks/post-mergeに書いておけばいいうようだ。

(あとでやる)

Python for Data Analysisはpandas: The Definitive Guide

あまり深く考えすにタイトルだけで購入したのだが、良い意味で裏切られた。でも分析の手法を期待して買うと退屈かもしれない。

ProductName Python for Data Analysis
Wes Mckinney
Oreilly & Associates Inc / 3634円 ( 2012-10-29 )


この本はpandasの作者がそのライブラリの説明を事細かに語っているという内容です。

pandasは何かというと

Python has long been great for data munging and preparation, but less so for data analysis and modeling. pandas helps fill this gap, enabling you to carry out your entire data analysis workflow in Python without having to switch to a more domain specific language like R.pandas

データプレパレーションと分析のギャップを埋めるためのライブラリです。

具体的にはpythonに(Rでいう)dataframeを与えます。実際にはdataframeに加えてSQLでいうところのjoin(many-to-manyとかone-to-many,outer,inner)とかgroupingもできるし、multiindex(階層型のインデックス)もサポートしているので、使いやすい。

Rでデータの前処理をやる気にはなかなかならないと思うので、大体他の言語でデータを綺麗にしてからRにぶち込むという流れが多いと思うが、pandas+scipy+matplotlibを使えば分析までできるし、scikit-learnを利用すればさらに機械学習も可能。どうしてもRが使いたければrpy2使えばいい。

本の内容は5章くらいまでをipythonやnumpyの基本的な事柄に割いているのと、appendixになぜかpythonの基礎が載っているという状況なので、Rユーザーの置き換えを意識して構成されているのかなぁ?という感じ。8章はmatplotlibの説明。

5章からpandasの機能がずらずらと紹介されていてデータの要約のやり方とか、欠損値の扱い方とかデータの変換とかRでよくやるであろうことを丁寧に説明している。で、章の最後に実際の例が載っているんだけど、この部分は読んでて楽しい。

読んで覚えるというよりは、pandasを使っていてわからないことが出てきたらこの本をあたって理解するという使い方のほうがいいかもしれない。

本書を読んでpandasを積極的に使っていこうと思ったので、ググったらちょっと前にtokyo.scipyで事例紹介されていたみたいで、、、行きたかったなぁ。