- 追加された行はこの色です。
- 削除された行はこの色です。
[[FrontPage]]
#contents
2013/12/23からのアクセス回数 &counter;
ここで紹介したSageワークシートは、以下のURLからダウンロードできます。
http://www15191ue.sakura.ne.jp:8000/home/pub/33/
また、Sageのサーバを公開しているサイト(http://www.sagenb.org/, http://www15191ue.sakura.ne.jp:8000/)にユーザIDを作成することで、ダウンロードしたワークシートを
アップロードし、実行したり、変更していろいろ動きを試すことができます。
* scikit-learn in Sage [#t36e816b]
脇山さんの[[投稿>http://www.slideshare.net/moa108/20130715-lt-scikitlearn?fb_action_ids=412677692184639&fb_action_types=slideshare%3Aupload&fb_source=og_timeline_photo_robotext]]
でscikit-learnの存在を知りました。Sageと同じPythonベースと言うこともあり、使ってみたいと思っており、正月休みの最後に試して見ることにしました。
** Sageへのscikit-learnのインストール [#d8fefacd]
Sageにscikit-learnモジュールをインストールするもっとも簡単な方法は、Sageのシェルモードからeasy_installを使ってインストールする方法です
以下の様にsageをシェルモードで起動してからeasy_install -U scikit-learnを実行します。最後にexitでシェルモードを抜けることをお忘れなく。
#pre{{
$ sage -sh
Starting subshell with Sage environment variables set. Don't forget
to exit when you are done. Beware:
* Do not do anything with other copies of Sage on your system.
* Do not use this for installing Sage packages using "sage -i" or for
running "make" at Sage's root directory. These should be done
outside the Sage shell.
Bypassing shell configuration files...
Note: SAGE_ROOT=/Users/take/local/sage
(sage-sh) $ easy_install -U scikit-learn
...
無事インストールできたら
(sage-sh) $ exit
}}
いくつかのマシンでインストールしたのですが、easy_installが上手くできなかったものもありました。
その場合には、ソースからインストールします。
#pre{{
(sage-sh) $ wget https://github.com/scikit-learn/scikit-learn/archive/master.zip
(sage-sh) $ unzip master; rm master
(sage-sh) $ cd scikit-learn-master
(sage-sh) $ python setup.py install
無事インストールできたら
(sage-sh) $ exit
}}
** サンプルデータを使った例題 [#y98697fb]
ブログ「唯物是真」
[[pythonの機械学習ライブラリscikit-learnの紹介>http://sucrose.hatenablog.com/entry/2013/05/25/133021]]
に出ているトイデータの例をSageで実行してみます。
load_digits関数で無事digitsを取り出すことができ、scikit-learnがsageにインストールできていることを確認しました。
sageへの入力:
#pre{{
from sklearn.datasets import load_digits
digits = load_digits()
print digits.data.shape
}}
#pre{{
(1797, 64)
}}
*** pylabのshowが使えない [#r4b37dc7]
次にpylabを使ってdigitsに含まれている画像を表示しようとするまったく表示されません。
sageへの入力:
#pre{{
import pylab as pl
pl.gray()
pl.matshow(digits.images[0])
pl.show()
# 何も表示されない
}}
Sageではpylabのshowの代わりにsavefigを使うことでSageがその結果を表示してくれるインタフェースになっているみたいです。
sageへの入力:
#pre{{
# showの代わりにsavefigを使うとsageが自動的に表示してくれる
pl.savefig('sample1.png')
}}
&ref(sample1.png);
*** Sageのグラフ機能を使って表示してみる [#q2220b62]
同じ結果は、Sageのmatrix_plotを使っても表示できます。
Sageのグラフ機能は柔軟性に富み、慣れると使いやすいです。(凝った表示の場合には、Rのggplot2が良いですが、...)
sageへの入力:
#pre{{
# sageのグラフ関数も使える
matrix_plot(digits.images[0], figsize=7)
}}
&ref(sage0.png);
** 脇山さんの例題を動かしてみる [#e1e7aa93]
脇山さんの投稿にある例題をSageで試してみます。
[[Data Science London + Scikit-learn>http://www.kaggle.com/c/data-science-london-scikit-learn]]
からデータをダウンロードし、Sageのワークシートの「Data」メニューからUpload or createを選択し、データをSageのワークシートにアップロードします。
&ref(sage-menu-bar.png);
*** Sageでのデータの使い方 [#p398ea3a]
Upload or createを使ってアップロードしたファイルは、ワークシートのDataディレクトリに保存され、そのままではSageでは使えません。
そこで、変数DATAを使ってワークシートのディレクトリを付けてデータにアクセスします。
*** Sageで動かしてみる [#v707ad65]
脇山さんの投稿にそってSVMを使ってtest.csvのデータを識別してみます。
sageへの入力:
#pre{{
# パッケージのインポート
import numpy as np
from sklearn import svm
# train.csv, trainLabels.csvファイルの読み込み
trainFeature = np.genfromtxt(open(DATA+'train.csv', 'r'), delimiter=',')
trainLabel = np.genfromtxt(open(DATA+'trainLabels.csv', 'r'), delimiter=',')
# svm.SVCを使って識別モデル(clf)を作成する
clf = svm.SVC(kernel='rbf', C=1)
clf.fit(trainFeature, trainLabel)
}}
#pre{{
SVC(C=1, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)
}}
sageへの入力:
#pre{{
# 作成した識別モデルclfを使ってtest.csvのデータに適応してみる
testFeature = np.genfromtxt(open(DATA+'test.csv', 'r'), delimiter=',')
result = clf.predict(testFeature)
print result
}}
#pre{{
[ 1. 0. 1. ..., 1. 0. 1.]
}}
*** scikit-learnは良く設計されている [#cab5541d]
脇山さんのスライドにあるようにscikit-learnは良く設計されており、使用する手法を変更するだけで
ほとんど同じように処理できるようになっています。
SVMで識別したのと同じ処理を「k近傍法」、「RandomForest」で計算した結果です。
sageへの入力:
#pre{{
# 同じデータを使ってk近傍法で計算
from sklearn import neighbors
# neighbors.KNeighborsClassifierを使って識別モデル(clf)を作成する
clf = neighbors.KNeighborsClassifier()
clf.fit(trainFeature, trainLabel)
# 作成した識別モデルclfを使ってtest.csvのデータに適応してみる
testFeature = np.genfromtxt(open(DATA+'test.csv', 'r'), delimiter=',')
result = clf.predict(testFeature)
print result
}}
#pre{{
[ 1. 0. 1. ..., 1. 0. 1.]
}}
sageへの入力:
#pre{{
# 同じデータを使ってRandomForestで計算
from sklearn.ensemble import RandomForestClassifier
# neighbors.KNeighborsClassifierを使って識別モデル(clf)を作成する
clf = RandomForestClassifier()
clf.fit(trainFeature, trainLabel)
# 作成した識別モデルclfを使ってtest.csvのデータに適応してみる
testFeature = np.genfromtxt(open(DATA+'test.csv', 'r'), delimiter=',')
result = clf.predict(testFeature)
print result
}}
#pre{{
[ 1. 0. 0. ..., 1. 0. 1.]
}}
** コメント [#m49706c2]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- Sage へのモジュールのインストール方法が参考になりました。ありがとうございます。http://mmays.hatenablog.com/entry/2014/03/30/135552 -- [[ysato]] &new{2014-04-02 (水) 15:30:28};
- proxy 環境下では easy_install は成功しない。~/.wgetrc に proxy を書けば wget を使ってインストールできる。このページが参考になりました。 -- [[ysato]] &new{2014-10-09 (木) 11:17:34};
#comment_kcaptcha