pandasとggplotを学ぶための本

最近グラフはPandas+ggplotで描いていて、深夜のバッチ処理で毎日沢山のグラフを生成させている。

rpy2?

使ってないなーみたいな。

Python版ggplotはR版のAPIと同じものを提供することをゴールにしているのでggplotのクックブックを読んでおくといいことがあります。六角形の密度プロットとか早く実装されないかなー。

ProductName Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集
Winston Chang
オライリージャパン / 3570円 ( 2013-11-30 )


尚、下の本も参考になります。

ProductName グラフィックスのためのRプログラミング
H. ウィッカム
丸善出版 / 4200円 ( 2012-02-29 )


そして、データの操作はPandasで。

ProductName Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
Wes McKinney
オライリージャパン / 3780円 ( 2013-12-26 )


機械学習はscikit-learnを使えばよい。

ggplot2のPython実装ができてた

pandasを使い始めてから、「Rのメリットってggplot2だけだよなー」と思っているんだけどggplotが実用的になったら、もうPythonでやりたいことは完結するよなーと思った。

ちなみにちょっと動かそうとしたけど、動かなかったので、GitHubの画像を載せておく。

plot

あとでコードリーディングする。

ProductName グラフィックスのためのRプログラミング
H. ウィッカム
丸善出版 / 4200円 ( 2012-02-29 )


入門機械学習の10章を読んだ(kNN)

k近傍法わかるしなーととばしてたのだけど、土曜日やったしということで復習的に読んでみた。

  • 距離行列を求めて
  • 近傍のk個を集めてきて
  • ラベルの多数決を取る

ソートは

> sort(sample(1:100, 10))
 [1] 35 41 53 56 57 62 64 74 83 89

類似度を距離に変換するのは

distance <- -log((similarities / 2) + 0.5)

とやることで-1< x <1という類似度の範囲を0 < x < ∞という距離の尺度に変換できる

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


第5回入門機械学習読書会を開催しました

皆様お疲れ様でした。初めての掛川を堪能した。

ランチはとろろ汁

1377428196

御飯の量が多いが、とろろ汁美味い

1377428198 1377428199

勉強会は掛川城の中にある、いい感じの建物

1377428200

自分たちでテーブルセッティング。でもプロジェクターとスクリーン、wifi込みで1600円とはお得すぎる会場費

1377428202

おやつはあめのもちとお茶。これまた美味しかった。

1377428203

帰りに撮った城とそのミニチュア

1377428205 1377428206

懇親会は駅前の炉端焼き屋さん

1377428207

焼き鳥の肉が大きくてナイスな感じ。スペアリブが美味しかった。お酒も静岡のもので揃えてあっていい感じ。ちなみ写っているのは某合コン部長(副部長)の手。グラスに注がれているのは國香の特純

1377428209 1377428210

次回は日が空いて10/26の予定

今週末は第5回入門機械学習読書会です

ランチに名物のいも汁を食すかたは掛川駅に1130に集合です。

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


一応6回で終了すると思うので次回以降の読書会のネタに関しても話し合いたいので、なにか推薦する方は教えて下さい。

いまのところ、機械学習の延長線上にありそうな「実践コンピュータビジョン」はどうかなという話が上がっております。OpenCV+機械学習+Pythonという結構面白い本だと思います

ProductName 実践 コンピュータビジョン
Jan Erik Solem
オライリージャパン / 3150円 ( 2013-03-23 )


twitterのリプライ頻度を可視化する

python+pandasで全部やればいいんだけど、ggplotが使いたかったので。

とりあえず全件取ってきた状態で

import csv

tweets = csv.reader(open("tweets.csv"))

print "Date\tMessage"
for tweet in tweets:
    if "[[user_id]]" in tweet[7]:
        print "{}\t{}".format(tweet[5].split()[0], tweet[7])

これである程度綺麗になったtsvが出力されるのであとはRStudioでいじる。data.tsvっていう名前で保存した。

library(plyr)
library(ggplot2)
library(scales)
setwd("/Users//kzfm/lang/rcode/tw")
tweets <- read.delim("data.tsv", sep="\t", stringsAsFactors=FALSE, header=TRUE)
tweet.counts <- ddply(tweets, .(Date), nrow)
date.range <- seq.Date(from=as.Date("2012-10-20"), to=as.Date("2013-8-12"), by="day")
date.strings <- strftime(date.range, "%Y-%m-%d")
dates <- data.frame(date.strings)
all.data <- merge(dates, tweet.counts, by.x=c("date.strings"), by.y=c("Date"), all=TRUE)
names(all.data) <- c("Date", "Counts")
all.data$Counts[is.na(all.data$Counts)] <- 0
all.data$Date <- as.Date(all.data$Date)

ggplot(all.data, aes(x=Date, y=Counts)) + 
geom_line() + 
scale_x_date(breaks="2 week", labels=date_format("%Y-%m-%d")) +
theme(axis.text.x=element_text(angle=-90))

入門機械学習の1章のやりかたが参考になった。

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


入門機械学習の9章を読んだ(Multi Dimensional Scaling)

8/24の入門機械学習読書会の範囲になっているMulti Dimensional Scaling(MDS)の章を読んだ。

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


最初から距離しか与えられてない場合にはMDSだろうけど、普通はPCAでいいんじゃないかなーと思いつつ。あとユークリッド距離使うんだったらSPEでもよかろうと。

ちなみにクラスタリング関係をRでやるんだったらこの本が参考になるんではないかと。バイオインフォと書いてあるけど、あれも結局インフォマティクスなんで、バイオロジーの知識がなくてもアルゴリズムとかクラスタリングの使い分けとかは理解できると思います。というわけで欲しいかたがいれば持っていきますので、連絡ください。

尚、次回の入門機械学習読書会は掛川開催でランチに名物のいも汁を食べに行くので興味ある方は参加されると良いです。本の内容は8,9,10のPCA,MDS,K-meansといったクラスタリング関係をまとめてやります。

第4回入門機械学習読書会を開催しました

お疲れ様でした。

正則化はちょっとむずかしいかもしれませんね。次回は回帰ではなくクラスタリングなので、面白いと思います。しかも掛川開催です。掛川初めて。

懇親会は金の字本店、清水といえばもつカレー

1374998338 1374998339

もつカレーも美味しいが、焼き鳥がうまい。左はあか焼といって脾臓だそうです。右はタン塩

1374998341 1374998342

ミノはコリコリしていて美味い、最初は静岡麦酒をのんでいたのだけど、やっぱビールはいいわってことで日本酒にスイッチ。

1374998344 1374998345

ねぎまとなんかわからん。

1374998347 1374998348

豚焼

1374998350

前日大阪に行っていたので、僕だけ早めに退散。お疲れ様でした。

pandasからmatplotlibを使う方法とバッチでハマった話

plotというメソッドが用意されているので楽ちんと思ったがバッチの処理をさせたら同じ画像ばっかり生成されて小一時間ハマった。

いつものようにsofによるとcloseが必要らしい。

for experiment in experiments:
    exp.data.plot(x="Date",
           y="Val",
           style="ro",
           )
    savefig("static/images/{}.png".format(exp.name))
    close()

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


RでWebアプリの作れるShinyというライブラリ

@harumakiyukkoがShinyをtweetしてたので、今週末の読書会のサンプルコードをShinyで書くかと思ったんだけど、よさげな題材が見つからなかったので保留中。

Shiny

これは分析者のための分析者による分析者のためのウェブアプリなので、非分析者との橋渡しにはならないだろうな。