はじめに
データ分析などの科学技術計算でJupyter notebook(Python)は、スタンダードといえるでしょう。
ここでは、dockerを使って、簡単に始める方法を説明します。
DockerToolboxのインストール
DockerToolboxのサイト(下記)からインストーラーをダウンロードして実行してください。
https://www.docker.com/products/docker-toolbox
インストールは、難しくないですが、必要であれば、参考リンクを参照してください。
Linuxの場合は、下記のようにして dockerをインストールできます。
wget -qO- https://get.docker.com/ | sh
Jupyterの起動
Linuxで実行する場合
下記のようにしてください1。
mkdir jupyter
docker run -it -d -p 8888:8888 -v $PWD/jupyter:/home/jupyter \
--name jupyter tsutomu7/alpine-python:jupyter
firefox localhost:8888
コンテナを終了して削除する場合は、次のようにしてください。
docker rm -f jupyter
WindowsやMacで実行する場合
DockerToolboxをインストールすると、Kitematicというツールがインストールされます。
Kitematicを起動してください。初回の起動では、DockerHubのログイン画面が表示されますが、スキップしてください。





ダウンロードがはじまり、しばらくすると下記のようにコンテナが起動します。

やってみる

グラフ
セルに下記を入力して、Shiftキーを押しながらEnterキーを押して実行してみましょう。
%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'IPAexGothic'
plt.plot([2,1,3], label='サンプル')
plt.legend();

最適化
セルに下記を入力して、実行してみましょう。
組合せ最適化問題を解いて数独を解くこともできます。
import pandas as pd, numpy as np
from more_itertools import grouper
from pulp import *
prob = """\
..6.....1
.7..6..5.
8..1.32..
..5.4.8..
.4.7.2.9.
..8.1.7..
..12.5..3
.6..7..8.
2.....4..
"""
r = range(9)
m = LpProblem() # 数理モデル
a = pd.DataFrame([(i, j, k, LpVariable('x%d%d%d'%(i,j,k), cat=LpBinary))
for i in r for j in r for k in r],
columns=['縦', '横', '数', 'x']) # (定式化1)
for i in r:
for j in r:
m += lpSum(a[(a.縦 == i) & (a.横 == j)].x) == 1 # (定式化2)
m += lpSum(a[(a.縦 == i) & (a.数 == j)].x) == 1 # (定式化3)
m += lpSum(a[(a.横 == i) & (a.数 == j)].x) == 1 # (定式化4)
for i in range(0, 9, 3):
for j in range(0, 9, 3):
for k in r:
m += lpSum(a[(a.縦 >= i) & (a.縦 < i+3) & # (定式化5)
(a.横 >= j) & (a.横 < j+3) & (a.数 == k)].x) == 1
for i, s in enumerate(prob.split('\n')):
for j, c in enumerate(s):
if c.isdigit():
k = int(c)-1 # (定式化6)
m += lpSum(a[(a.縦 == i) & (a.横 == j) & (a.数 == k)].x) == 1
m.solve() # ソルバーで求解
f = a.x.apply(lambda v: value(v) == 1) # 選ばれた数字
print(np.array(list(grouper(9, a.数[f] + 1))))
[[5 3 6 8 2 7 9 4 1]
[1 7 2 9 6 4 3 5 8]
[8 9 4 1 5 3 2 6 7]
[7 1 5 3 4 9 8 2 6]
[6 4 3 7 8 2 1 9 5]
[9 2 8 5 1 6 7 3 4]
[4 8 1 2 9 5 6 7 3]
[3 6 9 4 7 1 5 8 2]
[2 5 7 6 3 8 4 1 9]]
Jupyter Projectとの比較
Jupyter notebookには、Jupyter Projectのイメージ(jupyter/notebook)もありますが、今回、紹介したものは、下記のメリットがあります。
特徴紹介したものJupyter Project新しいPython 3.5.1Python 3.4.3サイズが小さい658.5 MB863.1 MBインストール済みパッケージ数が多い6938
tsutomu7/alpine-python:jupyter のインストール済みパッケージ
packageverpackageverpackageverpackageverblist1.3.6bokeh0.11.1chest0.2.3cloudpickle0.1.1conda4.0.5conda-env2.4.5cycler0.10.0dask0.8.2decorator4.0.9entrypoints0.2flask0.10.1fontconfig2.11.1freetype2.5.5heapdict1.0.0ipykernel4.3.1ipython4.1.2ipython-genutils0.1.0ipython_genutils0.1.0ipywidgets4.1.1itsdangerous0.24jinja22.8jsonschema2.4.0jupyter1.0.0jupyter-client4.2.2jupyter-console4.1.1jupyter-core4.1.0jupyter_client4.2.2jupyter_console4.1.1jupyter_core4.1.0libgfortran3.0libpng1.6.17libsodium1.0.3libxml22.9.2locket0.2.0markdown2.6.6markupsafe0.23matplotlib1.5.1mistune0.7.2more-itertools2.2mpmath0.19nbconvert4.2.0nbformat4.0.1ncurses5.9networkx1.11nomkl1.0notebook4.1.0numpy1.11.0openblas0.2.14openssl1.0.2gpandas0.18.0partd0.3.2path.py8.2patsy0.4.1pexpect4.0.1pickleshare0.5pip8.1.1psutil4.1.0ptyprocess0.5pulp1.6.1pycosat0.6.1pycrypto2.6.1pygments2.1.3pyjade4.0.0pyparsing2.0.3pyqt4.11.4python3.5.1python-dateutil2.5.2pytz2016.3pyyaml3.11pyzmq15.2.0qt4.8.7qtconsole4.2.1readline6.2requests2.9.1scikit-learn0.17.1scipy0.17.0seaborn0.7.0setuptools20.3simplegeneric0.8.1sip4.16.9six1.10.0sqlite3.9.2statsmodels0.6.1sympy1.0terminado0.5tk8.5.18toolz0.7.4tornado4.3traitlets4.2.1werkzeug0.11.5wheel0.29.0xz5.0.5yaml0.1.6zeromq4.1.3zlib1.2.8
jupyter/notebook のインストール済みパッケージ
packageverpackageverpackageverpackageverbackports-abc(0.4)cffi(1.5.2)cryptography(1.2.2)decorator(4.0.9)idna(2.0)ipykernel(4.2.2)ipython(4.1.1)ipython-genutils(0.1.0)Jinja2(2.8)jsonschema(2.5.1)jupyter-client(4.1.1)jupyter-core(4.0.6)MarkupSafe(0.23)mistune(0.7.1)nbconvert(4.1.0)nbformat(4.0.1)ndg-httpsclient(0.4.0)nose(1.3.7)notebook(5.0.0.dev0)path.py(8.1.2)pexpect(4.0.1)pickleshare(0.6)pip(8.0.2)ptyprocess(0.5.1)pyasn1(0.1.9)pycparser(2.14)Pygments(2.1.1)pyOpenSSL(0.15.1)pyzmq(15.2.0)requests(2.9.1)setuptools(20.1.1)simplegeneric(0.8.1)six(1.10.0)terminado(0.6)tornado(4.3)traitlets(4.1.0)wheel(0.29.0)widgetsnbextension(0.0.2.dev0)
参考リンク
-
- Docker Toolboxのインストール:Windows編
-
- 現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ
- ubuntuベースのjupyter: tsutomu7/jupyter (827MB)
以上
ユーザID、グループIDともに1000にしています。異なる場合は、Dockerfileを修正して、自前で”docker build”してください。 ↩