はじめに

データ分析などの科学技術計算で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のログイン画面が表示されますが、スキップしてください。

image
image
image
image
image

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

image

やってみる

image

グラフ

セルに下記を入力して、Shiftキーを押しながらEnterキーを押して実行してみましょう。

%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'IPAexGothic'
plt.plot([2,1,3], label='サンプル')
plt.legend();
image

最適化

セルに下記を入力して、実行してみましょう。
組合せ最適化問題を解いて数独を解くこともできます。

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”してください。 ↩

广告
将在 10 秒后关闭
bannerAds