LoginSignup
17
17

More than 5 years have passed since last update.

Jupyter notebook(Python3.5)を簡単に使う

Last updated at Posted at 2016-04-15

はじめに

データ分析などの科学技術計算でJupyter notebook(Python)は、スタンダードといえるでしょう。
ここでは、dockerを使って、簡単に始める方法を説明します。

DockerToolboxのインストール

DockerToolboxのサイト(下記)からインストーラーをダウンロードして実行してください。
https://www.docker.com/products/docker-toolbox

インストールは、難しくないですが、必要であれば、参考リンクを参照してください。

Linuxの場合は、下記のようにして dockerをインストールできます。

bash
wget -qO- https://get.docker.com/ | sh

Jupyterの起動

Linuxで実行する場合

下記のようにしてください1

bash
mkdir jupyter
docker run -it -d -p 8888:8888 -v $PWD/jupyter:/home/jupyter \
  --name jupyter tsutomu7/alpine-python:jupyter
firefox localhost:8888

コンテナを終了して削除する場合は、次のようにしてください。

bash
docker rm -f jupyter

WindowsやMacで実行する場合

DockerToolboxをインストールすると、Kitematicというツールがインストールされます。
Kitematicを起動してください。初回の起動では、DockerHubのログイン画面が表示されますが、スキップしてください。

Kitematicが起動したら、下記のように、検索ボックスに"tsutomu7/alpine-python"と入力してください。下に検索結果が出ますので、右下の"○○○"をクリックしてください。
image

下記のように"SELECTED TAG"をクリックしてください。
image

"jupyter"をクリックしてください。
image

"×"を押して、戻ってください。
image

"CREATE"を押してください。
image

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

  • ”VOLUMES”の下をクリックして、”Enable"すると、後述の実行結果をホスト(WindowsやMac)に残せます。
  • "WEB PREVIEW"の下をクリックするとブラウザが開いて Jupyterを使うことができます。 image

やってみる

image

グラフ

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

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

このようにmatplotlibでグラフを書くことができて、日本語も扱えます。
image

最適化

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

jupyter
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.1 Python 3.4.3
サイズが小さい 658.5 MB 863.1 MB
インストール済みパッケージ数が多い 69 38

tsutomu7/alpine-python:jupyter のインストール済みパッケージ

package ver package ver package ver package ver
blist 1.3.6 bokeh 0.11.1 chest 0.2.3 cloudpickle 0.1.1
conda 4.0.5 conda-env 2.4.5 cycler 0.10.0 dask 0.8.2
decorator 4.0.9 entrypoints 0.2 flask 0.10.1 fontconfig 2.11.1
freetype 2.5.5 heapdict 1.0.0 ipykernel 4.3.1 ipython 4.1.2
ipython-genutils 0.1.0 ipython_genutils 0.1.0 ipywidgets 4.1.1 itsdangerous 0.24
jinja2 2.8 jsonschema 2.4.0 jupyter 1.0.0 jupyter-client 4.2.2
jupyter-console 4.1.1 jupyter-core 4.1.0 jupyter_client 4.2.2 jupyter_console 4.1.1
jupyter_core 4.1.0 libgfortran 3.0 libpng 1.6.17 libsodium 1.0.3
libxml2 2.9.2 locket 0.2.0 markdown 2.6.6 markupsafe 0.23
matplotlib 1.5.1 mistune 0.7.2 more-itertools 2.2 mpmath 0.19
nbconvert 4.2.0 nbformat 4.0.1 ncurses 5.9 networkx 1.11
nomkl 1.0 notebook 4.1.0 numpy 1.11.0 openblas 0.2.14
openssl 1.0.2g pandas 0.18.0 partd 0.3.2 path.py 8.2
patsy 0.4.1 pexpect 4.0.1 pickleshare 0.5 pip 8.1.1
psutil 4.1.0 ptyprocess 0.5 pulp 1.6.1 pycosat 0.6.1
pycrypto 2.6.1 pygments 2.1.3 pyjade 4.0.0 pyparsing 2.0.3
pyqt 4.11.4 python 3.5.1 python-dateutil 2.5.2 pytz 2016.3
pyyaml 3.11 pyzmq 15.2.0 qt 4.8.7 qtconsole 4.2.1
readline 6.2 requests 2.9.1 scikit-learn 0.17.1 scipy 0.17.0
seaborn 0.7.0 setuptools 20.3 simplegeneric 0.8.1 sip 4.16.9
six 1.10.0 sqlite 3.9.2 statsmodels 0.6.1 sympy 1.0
terminado 0.5 tk 8.5.18 toolz 0.7.4 tornado 4.3
traitlets 4.2.1 werkzeug 0.11.5 wheel 0.29.0 xz 5.0.5
yaml 0.1.6 zeromq 4.1.3 zlib 1.2.8

jupyter/notebook のインストール済みパッケージ

package ver package ver package ver package ver
backports-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)

参考リンク

以上


  1. ユーザID、グループIDともに1000にしています。異なる場合は、Dockerfileを修正して、自前で"docker build"してください。 

17
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17