2015年2月12日木曜日

vimを使いやすくするメモ

vimのプラグインやら設定やらのメモです。

NeoBundleのインストール

mkdir -p ~.vim/bundle
git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

vimの設定。
.vimrcにコピペでok
"---------------------------
" Start Neobundle Settings.
"---------------------------

set runtimepath+=~/.vim/bundle/neobundle.vim/
 
" Required:
call neobundle#begin(expand('~/.vim/bundle/'))
 
NeoBundleFetch 'Shougo/neobundle.vim'
 
NeoBundle 'Townk/vim-autoclose'
NeoBundle 'scrooloose/nerdcommenter'
 
call neobundle#end()
 
" Required:
filetype plugin indent on
 
"-------------------------
" End Neobundle Settings.
"-------------------------

"-------------------------
" start vim Settings.
"-------------------------

set number
set title
set showmutch
syntax on
set tubstop=4
set shiftwidth=4
set autoindent
set smartindent
set ignorecase
set smartcase
set wrapscan
set noswapfile
set clipboard=unnamedplus

let NERDSpaceDelims = 1
nmap cc NERDCommenterToggle
vmap cc NERDCommenterToggle

"-------------------------
" end vim Settings.
"-------------------------

HTMLの関係なのかよくわからないが、最終行でplugを閉じてる。コレは無視してください。
vimを開いて以下のコマンドでインストール。
:NeoBundleInstall

以上。

2015年2月8日日曜日

Google Earth Pro のライセンスが無料になった!!

Google Earth Pro のライセンスが無料になったので使ってみました!

下記リンクより登録&ダウンロードします。
https://www.google.com/work/mapsearth/products/earthpro.html

インストールされたら、登録時に送られてきたメールに記載されるライセンスコードを入力します。以上!
そして、使ってみた印象ですが、別にProじゃなくてもいいかな...。
て感じですww

是非お試しください!!


ではでは(・∀・)ノ

機械学習ライブラリ"LIBSVM"の話

LIBSVMの話をします。
自律ロボットにおいて障害物が何であるかを認識するために、予め学習したデータと比較して判断をしたい。そんな時があります。
そこで使うのが"機械学習"です。
そんな機械学習で一番メジャーなのがSVMだと勝手に思ってます。しかし、"機械学習"というと難解そうな気がしますよね。
そんな難しそうなSVMを簡単に使えるSVMのライブラリがLibSVMだと思います。 評価用のアプリケーションも付属ですし。適当なディレクトリにダウンロードしてmakeするだけ。簡単!

唐突ですが、ざっくりとメモ程度に使い方を説明していきたいと思います!
ちなみに動作環境はUbuntu13.04です。

LibSVM自体は本家よりダウンロードします。
http://www.csie.ntu.edu.tw/~cjlin/libsvm/

ダウンロードしたら適当なところで展開し、makeします。これだけで使えるようになるはずです。
それでは使い方です。

まず、学習用のファイルを作ります。ファイルの体裁は次のように作成します。
1 1:0.1 2:0.3 3:0.2
-1 1:0.4 2:0.8 3:0.9

一番左にはラベル、そのうしろにスペース区切りで番号順に特徴ベクトルの値を入れます。
このファイルを使って学習します。
学習ファイルを作ったらスケーリングします。スケーリングでは、各特徴ベクトルの値のMin,Maxで正規化しています。
その正規化に使われる最高値、最小値をメモったものがrangeファイルになります。
このrangeファイルは、実装するときにも使うので必ず必要となります。
通常のスケーリングではrangeファイルとスケーリングされたファイルは別々に作られますが、下記コマンドでrangeファイルの生成とスケーリングを一括でやってくれます。
./svm-scale -l -1 -u 1 -s sample.range sample.txt > sample_scaled.txt

オプションの"-s"は保存を意味します。"-s"のあとはrangeファイルの名前になります
スケーリングファイルが作成できたら、次は学習に必要なパラメータを推定します。 パラメータ推定には便利なPythonのアプリが用意されています。これを使いましょう。
これは交差検証によりパラメータを推定していきます。交差検証を簡単に説明すると、入力データを学習用、評価用に分けて学習、評価を繰り返してパラメータを推定していきます。
./tools/grid.py sample_scaled.txt

この時、スケーリングしていないファイルだとエラーになります。
また、grid.pyのソース内にある

nr_local_worker = 1

の数字を変更することで、数字の個数のCPUにより並列して計算してくれるようになります。

また、パラメータの走査範囲を変更したいときはオプションを使います。
./tools/grid.py -log2c 0,5,1 -log2g 5,0,-1 sample_scaled.txt

この時注意することは、log2cの方は"-(マイナス)"方向に入力しなければなりません。

パラメータが求められたらそれを使って学習していきます。
./svm-train -c 32.0 -g 8.0 sample_scaled.txt sample_model.model > sample_model_param.txt

学習時のパラメータ等は後々プログラムに導入するときとかに使うことがあるのでメモっておくのが良いと思います。てことでテキストファイルに書き出してます^^

これで基本的な学習は完了です。簡単ですね。
作成されたモデルの精度検証には"predict"を使います。デフォルトだと少し使いづらいので、あとで書き直します^^
とりあえずはデフォルトで説明していきます。と言っても実行するだけなのですが...w

まず、予測に必要なのは評価用のテスタデータです。学習用のファイルとは別に同様の体裁でテストデータを作ります。
それに対して学習モデルのスケーリングパラメータ(正規化に用いる最小値、最高値)を使ってスケーリングします。

./svm-scale -l -1 -u 1 -r sample.range test.txt > test_scaled.txt

オプションの"-r"は読み込みです。
ここで、スケーリングパラメータを読み込む意味は、学習と同様のスケーリングをしてあげないと学習の意味が全くなくなるからです。
そして、スケーリングされたテストデータに対し予測をします。
./svm-predict test_scaled.txt sample_model.model > test_predict.txt

これで、作成したモデルがどのくらい有効なのかを判断します。

基本的な使い方は以上です!こんなに簡単に使えると、小難しいイメージの機械学習も取っ付きやすいですね^^


次に、実装について話したいと思います。単純に入力データを判別するだけなら、上記のやり方だけでOKです。
しかしながら、自律ロボットに実装して使いたいので、それ用のソースコードが必要になります。
でも簡単なもので動いちゃうのがLibSVMのいいところです。
では、説明していきます!


以下、執筆中...。
もうしばらくお待ちください。


OS X YosemiteでScilabを起動できたのでメモ


Yosemiteにアップデートした時からScilabを少し諦めてました。
久しぶりにちょっとやってみたら普通に起動できたのでメモ代わりに。

どうやらJava6が必要なようで...。
下記リンクよりMacのやつをダウンロード。

http://support.apple.com/kb/DL1572?viewlocale=ja_JP

インストールしたら、有効化する必要があります。

下記サイトを参考にターミナルでコマンドを打ち込んでいきます。

http://support.apple.com/ja-jp/HT202643

コマンドの内容は以下です。

sudo mkdir -p /Library/Internet\ Plug-Ins/disabled 
sudo mv /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin /Library/Internet\ Plug-Ins/disabled
sudo ln -sf /System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin 
sudo ln -sf /System/Library/Frameworks/JavaVM.framework/Commands/javaws /usr/bin/javaws

これで有効化されます。
下記リンク等でバージョンを確認してみると...。
http://www.java.com/ja/download/installed.jsp














6になってます^^

そして、yosemite用のscilabをダウンロード。
http://www.scilab.org/download/5.5.1

OS X 10.10のをダウンロードします。

でインストールしますが、MacのLaunchpadからだと起動できません。
どうやら開発元が不明のため開けないようです。基本的にそういったアプリを起動するような設定にしているはずなのですが...。許可するかどうかも選択できないようになっています...。

てことでそんな時の解決策は

・Finderでアプリケーションのとこを開く。
・インストールされているScilabをcontrolを押しながらクリック(右クリック)。
・開かれたメニューからOpenしてあげれば、アプリを起動するか聞いてくるので許可。

これでScilabが起動するはずです。次からはLaunchpadからでも起動できるようになっています。
なんだかめんどうですね.......。

まあ起動できたから良し!

ではでは(・∀・)ノ