UbuntuServer 16.04 LTSでJupyter Notebookを使った機械学習環境を手っ取り早く作る手順 with anaconda

# はじめに

以前、同じような記事を書きましたが、pyenvを使うともっと簡単だったのであらためて手順を整理します。
ちなみに、環境によってはpyenvを使えないとか使いたくないという方もおられると思いますので、そのような場合は以下のURLをご参照下さい。

http://qiita.com/mix_dvd/items/7d2f11fa090cf39a5b31

# UbuntuServerのインストール

以下のURLからisoファイルをダウンロードして、実機でも仮想環境でも構わないのでインストールします。

http://www.ubuntu.com/download/server

詳しい手順は、詳細を説明したサイトがあったので、こちらをご参照下さい。

http://webkaru.net/linux/ubuntu-14-04-lts-install/

# 初期ユーザーでログイン

インストール中に作成した初期ユーザーでログインします。
※ rootではログインできません。

# ひたすらコマンドを打つ！

以下は、ログインしたユーザーでのみ環境を使用する場合の手順です。

## 環境準備

以下のコマンドはJupyter Notebookの実行自体には必要ありませんが、ライブラリのインストールや実行時にエラーが出る場合があるので、あらかじめインストールしておきます。

```
$ sudo apt install -y build-essential
$ sudo apt install -y libsm6
$ sudo apt install -y libxrender1
```

最初のコマンドを実行する時、パスワードの入力を求められた場合はログインに使用するパスワードを入力してください。

## pyenvのインストール

https://github.com/yyuu/pyenv

pyenvは複数バージョンのPythonを一つの環境にインストールするためのツールです。

```
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
```

ちなみにpyenvのアップデートは以下のコマンドを使用します。

```
$ cd ~/.pyenv
$ git pull
```

## Anacondaのインストール

https://www.continuum.io/why-anaconda

### バージョン確認

インストールできるAnacondaのバージョンを確認する。

```
$ pyenv install -l | grep anaconda
```

2016/6/10現在、最新版は4.0.0でした。
Pythonはバージョン2.x系とバージョン3.x系で異なるところが多いため、お使いの環境にあわせて、以下のいずれかをお選びください。特に指定がなければ、3.x系を選んで良いと思います。

### Python 2系

```
$ pyenv install anaconda2-4.0.0
$ pyenv rehash
$ pyenv global anaconda2-4.0.0
$ echo 'export PATH="$PYENV_ROOT/versions/anaconda2-4.0.0/bin/:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
```

### Python 3系

```
$ pyenv install anaconda3-4.0.0
$ pyenv rehash
$ pyenv global anaconda3-4.0.0
$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-4.0.0/bin/:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
```

ちなみに、環境によっては以下のようなメッセージが出る場合があるようです。

```
$ pyenv install anaconda3-4.2.0 
Downloading Anaconda3-4.2.0-Linux-x86.sh...
-> https://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86.sh
error: failed to download Anaconda3-4.2.0-Linux-x86.sh

BUILD FAILED (Ubuntu 16.04 using python-build 1.0.7-1-g99d1670)
```

解決方法は、以下のとおり。

```
$ sudo apt-get install ca-certificates
$ sudo mkdir -p /etc/pki/tls/certs
$ sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
```

上記を実行した後、pyenvでAnacondaをインストールして下さい。

# 追加ライブラリ

## Seaborn

本家サイト https://web.stanford.edu/~mwaskom/software/seaborn/

```
$ pip install seaborn
```

## XGBoost

本家サイト https://xgboost.readthedocs.io/

参考URL https://xgboost.readthedocs.io/en/latest/build.html#python-package-installation

```
$ git clone --recursive https://github.com/dmlc/xgboost
$ cd xgboost
$ make -j4
$ cd python-package
$ python setup.py install
```

pipでインストールできるのですが、インストールはできても実行時にエラーが出ることがありましたので、ソースコードからコンパルしてインストールする手順を示してあります。

## TensorFlow (64bit版のみ)

参考URL https://www.tensorflow.org/versions/r0.9/get_started/os_setup.html#pip-installation

### Python 2

Ubuntu/Linux 64-bit, CPU only, Python 2.7

```
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0rc0-cp27-none-linux_x86_64.whl
$ sudo pip install --upgrade $TF_BINARY_URL
```

### Python 3

Ubuntu/Linux 64-bit, CPU only, Python 3.5

```
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0rc0-cp35-cp35m-linux_x86_64.whl
$ sudo pip3 install --upgrade $TF_BINARY_URL
```

# Jupyter Notebook

本家サイト http://jupyter.org

## 設定

```
$ cd
$ jupyter notebook --generate-config
$ echo "c.NotebookApp.ip = '*'" >> ~/.jupyter/jupyter_notebook_config.py
$ echo "c.NotebookApp.open_browser = False" >> ~/.jupyter/jupyter_notebook_config.py
$ echo "c.NotebookApp.port = 8888" >> ~/.jupyter/jupyter_notebook_config.py
```

## 起動

初期ユーザーのホームディレクトリで以下のコマンドを実行。

```
$ jupyter notebook
```

## 動作確認

いろいろ動いてそうに見えたら、別のマシンのWebブラウザを起動して以下のURLにアクセスする。

http://xxx.xxx.xxx.xxx:8888

「xxx.xxx.xxx.xxx」はUbuntuマシンのIPアドレスに置き換えて入力して下さい。

Jupyter Notebookのページが表示されたらO.K.！

# 追記(2016.7.11)

matplotlibでグラフを描画する時に日本語が表示されないことがあり、対応手順をまとめましたのであわせてご覧ください。

http://qiita.com/mix_dvd/items/1c192bd8c852c4aaa413

# 追記(2016.7.25)

ホームディレクトリに保存したファイルを簡単に取り出したいという要望があり、Sambaを使って他のPCからアクセスできるようにする手順を追記します。

まずは、Sambaのインストール。

```
$ sudo apt install -y samba
$ sudo pdbedit -a [ログインユーザー名]
new password: [任意のパスワード]
retype new password: [任意のパスワード]
```

次は設定ファイルの編集。

```
$ sudo vi /etc/samba/smb.conf
```

以下の部分を探してコメントアウトされていたり、内容が違う部分を修正。

```:smb.conf
[homes]
  comment = %U's Home directory
  browseable = Yes
  read only = No
  writable = Yes
```

Sambaの再起動。

```
$ sudo systemctl restart smbd nmbd
```

以上です。