入門機械学習の線形回帰をscikit-learnでやってみる

5.2のウェブアクセス数予測の節でRのコードは以下のようによくあるもの

> lm.fit <- lm(log(PageViews) ~ log(UniqueVisitors), data = top.1000.sites)
> summary(lm.fit)

Call:
lm(formula = log(PageViews) ~ log(UniqueVisitors), data = top.1000.sites)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.1825 -0.7986 -0.0741  0.6467  5.1549

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)         -2.83441    0.75201  -3.769 0.000173 ***
log(UniqueVisitors)  1.33628    0.04568  29.251  < 2e-16 ***
---

これをpandas+scikit-learnでやってみる。プロットするのでipython -pylabで起動しておく。

from sklearn import linear_model
import pandas as pd
import numpy as np
top_1k_sites = pd.read_csv("top_1000_sites.tsv", sep="\t")
scatter(np.log(top_1k_sites["PageViews"]), np.log(top_1k_sites["UniqueVisitors"]))
clf = linear_model.LinearRegression()
clf.fit(np.log(top_1k_sites[["UniqueVisitors"]]), np.log(top_1k_sites["PageViews"]))
clf.coef_        # array([ 1.33627803])
clf.intercept_ # -2.834409473735672

個人的にRの表記の仕方(y ~ Xみたいな)のほうに慣れているのでscikit-learnのfit(X, y)という書き方は最初ちょっと戸惑った。

以下はscatter(np.log(top_1k_sites["PageViews"]), np.log(top_1k_sites["UniqueVisitors"]))で表示される散布図

plot

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


頂2013にいってきた

土曜日は子供の運動会だったので日曜のみの頂参加。曇りのち雨の予報が結局晴れに変わったので、フェス日和で良かったが、日焼け止めしてても結構焼けた感がある。

1370210016 1370210020

頂は子供に優しいフェスなのがよかった。遊具や工作ブースがついていて子供が飽きないように配慮されているのが良かった。それから本当にゴミが少ない(これは驚きだった)

焼きごてで工作するやつ。

1370210017 1370210019

竹でできた巨大なブランコ(ハイジブランコ)

1370210024 1370210022

Photoのお店によって、オレンジジュースを調達して休憩している娘と息子。

1370210023

アーティスト的にはWild Marmaladeが最高によかった。あのグルーブとディジュリドゥはヤバかった。

頂のよいところ

  • ゴミがない
  • 子連れに優しい

来年もいきたい。

データサイエンティストだから分析力があるのか分析力があるからデータサイエンティストになれるのか

ビッグデータとデータサイエンティストがバズっていて残念な感じに仕上がっている今日このごろですが、読み物としては面白かった(ちょっとくどいので読んでいて辛い部分が多かったけど)。

  • 分析の半分は科学で、半分はアートで出来ている

潜在顧客を探し出す手段(4つ)

  1. メディアプランニング
  2. 地理的ターゲティング
  3. 個別ターゲティング
  4. パネル

目標はSMARTに。

  • 具体的
  • 測定可能
  • 達成可能
  • 現実的
  • 時間設定

7章の最適化の章が参考になった。A2A(分析からアクションへ)というフレームワークは興味深い(が難しい)。それは

データ->分析->テスト->共有->実行->(データに戻る)

というPDCAサイクルのようなものである。分析、テスト、共有のステージは好きなことはなんでもできるが実行ステージでの行動に変化がなければ、これまでの作業は何の意味も持たないわけであるが、行動の変化を促すのはやっぱ難しいよなぁと。特に実行者と分析者が分かれている場合はなおさらだ。

それは実行前の共有化に問題があるのかなぁと思っていて、そこら辺の改善に取り組んでいるんだけどねー。なかなか難しいですね。

NASが死んだ

ちょうど一年経つかどうかというところで死んだ。昨日帰ってきたらビープ音がしてて、電源抜いて再度入れたらセミみたいな音が聞こえてきて、静かになったと思ったら青ランプ点滅したまま。

横置きにしてたから暑さにやられたのかなぁ。修理すんのもめんどいので新しいNASを買った。2Tは必要ないので1Tにした

今度は縦置きで運用してみる。

PythonScriptでHandlebarsを扱う

PythonScriptでhtmlテンプレートを使いたいなぁと思ったのでHandlebarsを使ってみた。

pythonscript with handlebars

index.jade

!!! 5
html
  head
    meta(charset='utf-8')
    meta(name='viewport', content='width=device-width')
    title Handlebars demo
    link(rel='stylesheet', href='stylesheets/app.css')
    script(src='javascripts/vendor/custom.modernizr.js')
  body
    .row
      .large-12
        h2 PythonScript with Handlebars
        hr
    script(src='javascripts/jquery.js')
    script(src='javascripts/handlebars.js')
    script(src='javascripts/pythonscript.js')
    script(src='javascripts/jquery.py.js')
    script(src='javascripts/app.py.js')
    script(src='javascripts/foundation/foundation.js')
    script
      $(document).foundation();

app.py

テンプレートをhtmlのscriptから取れなかったのでベタ書きした。あと",'の扱いが0.7.4でおかしくなってる。

source = "<h3>{{title}}</h3><div>{{body}}</div>"

template =  JS("Handlebars.compile(source)")
title = "ひげひげひげ"
body = "セクシーコマンドー外伝"
data = JS("template({title:title,body:body})")
J("body .row ").append(data)

ちょっと試した感じではラップすればjavascriptを意識せずに使えそう。scriptタグでテンプレートが読み込めない問題は困るが。

ProductName セクシーコマンド外伝 すごいよ!!マサルさん(1) [DVD]

バンダイビジュアル / 3243円 ( 2001-01-25 )


シドニアの騎士をまとめ買い

BLAME!は好きだった。というわけでシドニアの騎士もまとめ買いというKindle効果。

ProductName シドニアの騎士(1)
弐瓶勉
講談社 / ?円 ( 2013-04-26 )


ProductName シドニアの騎士(2)
弐瓶勉
講談社 / ?円 ( 2013-04-26 )


ProductName シドニアの騎士(3)
弐瓶勉
講談社 / ?円 ( 2013-04-26 )


ProductName シドニアの騎士(4)
弐瓶勉
講談社 / ?円 ( 2013-04-26 )


ProductName シドニアの騎士(5)
弐瓶勉
講談社 / ?円 ( 2013-04-26 )


ProductName シドニアの騎士(6)
弐瓶勉
講談社 / ?円 ( 2013-05-24 )


ProductName シドニアの騎士(7)
弐瓶勉
講談社 / ?円 ( 2013-05-24 )


Hakuin: PythonのフロントエンドM(VC)フレームワーク

ぼくも日本酒にちなんだフレームワークをつくりたいなーと思っていたので、Zen of PythonScriptでSpineインスパイアなHakuinというPythonのフロントエンドM(VC)フレームワークを作って遊んでいる(韻を踏むかは個人的に超重要)。

hakuin

ちなみに0.6.1では動くけれど0.7.4では動かないので、これから対応していく。今のとこ

  • クラスメソッドがうまくうごかない
  • シングルトンの作り方がわからないのでグローバル
  • e.preventdefault()が使えない
  • importのやり方がわからないので、とりあえずベタ書き

というあたりの制約があるため、ほぼ100%トイプログラミングなのだけどtodoくらいなら動く。それから上記1番目の理由でSpineインスパイアなのにCollectionモデルを取り入れている。

次回のShizuoka.pyで話す予定

以下の日本語注釈付きソースは参考になった。backbone.jsのほうは次回の「TalkNote × Frontrend(フロントレンド)」の演者の人が管理されているようなので、興味があれば参加するといいと思う。個人的にはSASS/Compassのセッションが超気になるんだけど、吉原祇園祭と被っているのでかなり参加は厳しい。

そして白隠正宗ではなく臥龍梅を飲み始めた。この純米吟醸まじ美味い。緑のラベルの超辛口ってのもあったんだけど、酒屋の奥さんのすすめの通り赤いラベルが正解だな。(さらに奥さん情報によると袋しぼりがメチャウマだったらしいんだけど、売り切れたらしい。)

1369817478

そのうちこんや銘酒館で日本酒を飲みながら、日本酒フレームワークハッカソンでもやりたい。

オクラと空芯菜を定植

130526

週始めにキュウリの苗を物色しに行ったのだけど、売り切れているというか終わっているっぽいので、サトイモ(赤目と石川早生を1つづつ)購入して育てて見ることにした(初里芋)。

ついでに隣の人参を間引いてみた。人参は順調すぎる。マルチをかけて作業終了。

1369741297

定植待ちのオクラ、空芯菜、モロヘイヤ。

1369741299

モロヘイヤはどこに植えるか悩んでいる。なかなか育たないし、ジャガイモの後でもいいかな?と。

130528

雨が降るという予報だったので、出社前にオクラと空芯菜を定植してきた。キュウリを予定していた場所にオクラを植えたので、スペース的には良い感じにおさまった。

1369741300 1369741302

で、今の状況。去年は右端に、一昨年は左端の空き区画にモロヘイヤを植えたのだけど連作どうかなぁ?中央に植えると区画が細切れになるから嫌なんだよなぁ。まぁ、端でも何とかなりそうな気もするので、ジャガイモの収穫タイミングしだいかなぁ。もらった落花生は種まいて一週間経つけど発芽の気配なしだが、そろそろ発芽してほしい。

130528

Haskell Platform 2013.2.0.0をインストールした

待望のHaskell Platformがリリースされたので早速入れてみる。

GHCが7.6.3になっていて64ビットでもYesodが動くので64bit版をインストールした。これで、curlもいけるかな。

それから、virthualenvがhsenvに変わっているので、virthualenvwrapperもhsenvwrapperに変えておこうっと。

瞑想はなかなかおもしろい

ヨガもそうだけど、スピリチュアルではなくて、サイエンスとして取り組むとなかなかおもしろいという事実に気づいた。

というわけで、脳科学系の本を読んだ後に、この本を読んでたまに瞑想をするようになったけどこれはよい習慣だと思う(書評は後で書くかも。)。

とりあえず脳容量をデフラグしている感があるのと、自分をイントロスペクションしているという実感が得られて、非常に清々しい。

腹式呼吸で息を吐くときに得られるふんわか感は、ボードでゆったりとしたB1をかますときのふんわり感に近いかも。あれが手軽に得られるのは素晴らしい。

あとは、クラブでミニマル・テクノでの持っていかれる感覚が得られると嬉しいんだが、いまのところそこまでには至っていない。