Juliaを使った

機械学習
2014/02/18 @はじパタLT
twitter: @chezou / github:chezou
自己紹介
Kawasaki.rbやってます
普段は、RubyとRailsのお仕事
機械学習やNLPに興味があります
Juliaとは?
数値計算・科学計算を対象とする動的
型付け言語
MATLABやnumpy/scipyと似た感覚で多
次元配列が簡単に扱える
速度もそれなりに速い
開発環境
Julia + IPython + IJulia + Gadfly
ブラウザベースで対話的に動作が実行で
き、D3.jsを使ってplotもできる
http://qiita.com/chezou/items/
d090f26dcb31818d6964
デモ
よく見るirisをplot
Pkg.add("RDatasets")	
using RDatasets	
using Gadfly	
iris = data("datasets", "iris")	
head(iris)	
tail(iris) 	
plot(iris, x = "SepalWidth", y = "SepalLength", color="Species")
k-means
Pkg.add("Clustering")	
using Clustering	
x = rand(100, 10000)	
k = 50	
result = kmeans(x, k; max_iter=50, display=:iter)	
result.assignments
SVM
Pkg.add("SVM")	
using SVM	
using RDatasets	

!

# Read iris data	
iris = data("datasets", "iris")	

!

# SVM format expects observations in columns and features in rows	
X = matrix(iris[:, 1:4])’	
p, n = size(X)	

!

# SVM format expects positive and negative examples to +1/-1	
Y = [species == "setosa" ? 1.0 : -1.0 for species in iris[:, "Species"]]	

!

# Select a subset of the data for training, test on the rest.	
train = randbool(n)	

!

# We'll fit a model with all of the default parameters	
model = svm(X[:,train], Y[train])	

!

# And now evaluate that model on the testset	
accuracy = nnz(predict(model, X[:,~train]) .== Y[~train])/nnz(~train)
小並感
IJulia使っている時に、`using PyPlot`と`using Gadfly`を
混ぜると`plot()`が混ざって大変危険
怪しくなったら、Kernel restartするのが良い
`Pkg.add()`で入るものが古い(=バグがある)場合がある
ので、`Pkg.update()`で必要に応じて最新版を
パッケージ最新版にしても、exampleコードがバグっ
て動かない時もある

Juliaを使った機械学習