VirtualBoxとUbuntuで機械学習scikit-learnの環境を構築する

# VirtualBoxのインストール

以下のURLから利用している環境のインストーラーをダウンロードし、インストールする。
https://www.virtualbox.org

また「Oracle VM VirtualBox Extension Pack」もダウンロードし、VirtualBoxインストール後に実行してインストールする。

# Ubuntuの仮想マシンを作成

以下のURLから仮想ハードディスクイメージをダウンロードし、Zipファイルを展開する。
https://www.ubuntulinux.jp/download/ja-remix-vhd

VirtualBoxを起動し、「新規(N)」にて新規仮想マシンの作成を行う。※上記URL参照。

仮想マシン名を設定すると、ホームディレクトリに以下のフォルダが作成されるので、仮想ハードディスクイメージを対象のフォルダに保存する。

[例] 仮想マシン名を「Ubuntu」とした場合

```:Windows
[ホームディレクトリ]¥VirtualBox VMs¥Ubuntu¥
```
```:Mac/Linux
~/VirtualBox VMs/Ubuntu/
```

ちなみに、僕はメインメモリーを4GBに設定しました。

設定後、仮想マシンを起動し初期設定を行う。

## SSH接続の設定

もし、仮想マシンを直接操作するのではなく、SSH接続で操作するのであれば以下の手順を実行する。

初期設定が終わり、デスクトップが表示されたら仮想マシンにSSHで接続できるように以下のコマンドを実行する。

```
$ sudo apt-get install openssh-server
```

実行後、仮想マシンをシャットダウンし、VirtualBoxのネットワーク設定を「NAT」から「ブリッジアダプター」に変更する。
これにより、仮想マシンのIPアドレスに対してSSH接続が可能となります。

```
$ ssh [ユーザー名]@[IPアドレス]
```

# pyenvによるpython3環境の構築

以下のサイトを参考に実施する。
http://qiita.com/akito1986/items/be5dcd1a502aaf22010b

## 必要なパッケージのインストール

pyenvのインストールに必要なパッケージをインストールする。

```
$ sudo apt-get install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
```

## pyenvのインストール

以下のコマンドを実行する。

```
$ cd /usr/local/
$ sudo git clone git://github.com/yyuu/pyenv.git ./pyenv
$ sudo mkdir -p ./pyenv/versions ./pyenv/shims
$ cd /usr/local/pyenv/plugins/
$ sudo git clone git://github.com/yyuu/pyenv-virtualenv.git
```

PATHの設定ファイルを作成する。

```
$ echo 'export PYENV_ROOT="/usr/local/pyenv"' | sudo tee -a /etc/profile.d/pyenv.sh
$ echo 'export PATH="${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"' | sudo tee -a /etc/profile.d/pyenv.sh
$ source /etc/profile.d/pyenv.sh
```

動作確認。

```
$ pyenv --version
```

sudo用のPATH設定

```
$ sudo visudo
```

以下のとおり編集する。

```
# 変更
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
↓
# Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# 追加
Defaults    env_keep += "PATH"
Defaults    env_keep += "PYENV_ROOT"
```

## python3のインストール(実施不要)

以下のコマンドを実行する

```
$ sudo pyenv install -v 3.5.1
```

インストール後の確認。

```
$ pyenv versions
* system (set by /usr/local/pyenv/version)
  3.5.1
```

デフォルトのバージョンを変更する。

```
$ sudo pyenv global 3.5.1
```

変更結果の確認。

```
$ pyenv versions
  system
* 3.5.1 (set by /usr/local/pyenv/version)
$ python --version
Python 3.5.1
```

なお、3.5.1は2016/4/12現在の最新版です。

## Minicondaのインストール

以下のサイトを参考に実施する。
http://qiita.com/icoxfog417/items/950b8af9100b64c0d8f9

以下のコマンドを実行する。

```
$ sudo pyenv install miniconda3-3.19.0
$ sudo pyenv global miniconda3-3.19.0
```

実行結果の確認。

```
$ pyenv versions
  system
  3.5.1 (set by /usr/local/pyenv/version)
* miniconda3-3.19.0 (set by /usr/local/pyenv/version)
$ python --version
Python 3.5.1 :: Continuum Analytics, Inc.
```

# 機械学習用の仮想環境構築

以下のコマンドを実行する。

```
$ conda create -n ml_env numpy scipy scikit-learn matplotlib cython ipython python-notebook
$ source ./.conda/envs/ml_env/bin/activate ml_env
(ml_env)$
```

# 動作確認

公式サイトのチュートリアルを参照。
http://scikit-learn.org/stable/tutorial/basic/tutorial.html

サンプルデータセットを読み込み、表示する。

```
$ python
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> digits = datasets.load_digits()
>>> print(digits.data)  
[[  0.   0.   5. ...,   0.   0.   0.]
 [  0.   0.   0. ...,  10.   0.   0.]
 [  0.   0.   0. ...,  16.   9.   0.]
 ...,
 [  0.   0.   1. ...,   6.   0.   0.]
 [  0.   0.   2. ...,  12.   0.   0.]
 [  0.   0.  10. ...,  12.   1.   0.]]
```

上記のとおり出力されればO.K.!

問題は、これからどうするのか...(汗)