FrontPage

2013/12/23からのアクセス回数 1765

ここで紹介した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

脇山さんの投稿 でscikit-learnの存在を知りました。Sageと同じPythonベースと言うこともあり、使ってみたいと思っており、正月休みの最後に試して見ることにしました。

Sageへのscikit-learnのインストール

Sageにscikit-learnモジュールをインストールするもっとも簡単な方法は、Sageのシェルモードからeasy_installを使ってインストールする方法です

以下の様にsageをシェルモードで起動してからeasy_install -U scikit-learnを実行します。最後にexitでシェルモードを抜けることをお忘れなく。

$ 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が上手くできなかったものもありました。 その場合には、ソースからインストールします。

(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

サンプルデータを使った例題

ブログ「唯物是真」 pythonの機械学習ライブラリscikit-learnの紹介 に出ているトイデータの例をSageで実行してみます。

load_digits関数で無事digitsを取り出すことができ、scikit-learnがsageにインストールできていることを確認しました。

sageへの入力:

from sklearn.datasets import load_digits
digits = load_digits()
print digits.data.shape
(1797, 64)

pylabのshowが使えない

次にpylabを使ってdigitsに含まれている画像を表示しようとするまったく表示されません。

sageへの入力:

import pylab as pl 
pl.gray() 
pl.matshow(digits.images[0]) 
pl.show() 
# 何も表示されない

Sageではpylabのshowの代わりにsavefigを使うことでSageがその結果を表示してくれるインタフェースになっているみたいです。

sageへの入力:

# showの代わりにsavefigを使うとsageが自動的に表示してくれる
pl.savefig('sample1.png')

sample1.png

Sageのグラフ機能を使って表示してみる

同じ結果は、Sageのmatrix_plotを使っても表示できます。 Sageのグラフ機能は柔軟性に富み、慣れると使いやすいです。(凝った表示の場合には、Rのggplot2が良いですが、...)

sageへの入力:

# sageのグラフ関数も使える
matrix_plot(digits.images[0], figsize=7)

sage0.png

脇山さんの例題を動かしてみる

脇山さんの投稿にある例題をSageで試してみます。

Data Science London + Scikit-learn からデータをダウンロードし、Sageのワークシートの「Data」メニューからUpload or createを選択し、データをSageのワークシートにアップロードします。

sage-menu-bar.png

Sageでのデータの使い方

Upload or createを使ってアップロードしたファイルは、ワークシートのDataディレクトリに保存され、そのままではSageでは使えません。 そこで、変数DATAを使ってワークシートのディレクトリを付けてデータにアクセスします。

Sageで動かしてみる

脇山さんの投稿にそってSVMを使ってtest.csvのデータを識別してみます。

sageへの入力:

# パッケージのインポート
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)
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への入力:

# 作成した識別モデルclfを使ってtest.csvのデータに適応してみる
testFeature = np.genfromtxt(open(DATA+'test.csv', 'r'), delimiter=',')
result = clf.predict(testFeature)
print result
[ 1.  0.  1. ...,  1.  0.  1.]

scikit-learnは良く設計されている

脇山さんのスライドにあるようにscikit-learnは良く設計されており、使用する手法を変更するだけで ほとんど同じように処理できるようになっています。

SVMで識別したのと同じ処理を「k近傍法」、「RandomForest」で計算した結果です。

sageへの入力:

# 同じデータを使って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
[ 1.  0.  1. ...,  1.  0.  1.]

sageへの入力:

# 同じデータを使って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
[ 1.  0.  0. ...,  1.  0.  1.]

コメント

選択肢 投票
おもしろかった 4  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。

  • Sage へのモジュールのインストール方法が参考になりました。ありがとうございます。http://mmays.hatenablog.com/entry/2014/03/30/135552 -- ysato? 2014-04-02 (水) 15:30:28
  • proxy 環境下では easy_install は成功しない。~/.wgetrc に proxy を書けば wget を使ってインストールできる。このページが参考になりました。 -- ysato? 2014-10-09 (木) 11:17:34

(Input image string)


添付ファイル: filesample1.png 355件 [詳細] filesage0.png 381件 [詳細] filesage-menu-bar.png 390件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-28 (火) 18:23:09 (971d)
SmartDoc