Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?
@kaizen_nagoya

dockerで機械学習(9) with anaconda(9)「pythonではじめる機械学習」Andreas C. Muller, Sarah Guido 著

1.すぐに利用したい方へ(as soon as)

pythonではじめる機械学習 Andreas C. Muller, Sarah Guido 著

picture_large978-4-87311-798-0.jpeg

p.12
「本書のコードは双方で動くように書かれているが、厳密にはPython2では若干出力が違っているかもしれない」
まずpython3で動作確認し、その後python2でも動作確認する予定である。
<この項は書きかけです。順次追記します。>

docker

dockerを導入し、Windows, Macではdockerを起動しておいてください。
Windowsでは、BiosでIntel Virtualizationをenableにしないとdockerが起動しない場合があります。
また、セキュリティの警告などが出ることがあります。

docker pull and run

$ docker pull kaizenjapan/conda3-amueller

$ docker run -it -p 8888:8888 kaizenjapan/conda3-amueller /bin/bash

以下のshell sessionでは
(base) root@f19e2f06eabb:/#は入力促進記号(comman prompt)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。
それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。
それぞれの章のフォルダに移動します。

dockerの中と、dockerを起動したOSのシェルとが表示が似ている場合には、どちらで捜査しているか間違えることがあります。dockerの入力促進記号(comman prompt)に気をつけてください。

ファイル共有または複写

dockerとdockerを起動したOSでは、ファイル共有をするか、ファイル複写するかして、生成したファイルをブラウザ等表示させてください。参考文献欄にやり方のURLを記載しています。

複写の場合は、dockerを起動したOS側コマンドを実行しました。お使いのdockerの番号で置き換えてください。複写したファイルをブラウザで表示し内容確認しました。

第1章

(base) root@040a6abb468b:/# ls
bin  boot  dev  etc  home  introduction_to_ml_with_python  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

(base) root@040a6abb468b:/# cd introduction_to_ml_with_python/

(base) root@040a6abb468b:/introduction_to_ml_with_python# ls
01-introduction.ipynb       04-representing-data-feature-engineering.ipynb  07-working-with-text-data.ipynb  cover.jpg    images
02-supervised-learning.ipynb    05-model-evaluation-and-improvement.ipynb   08-conclusion.ipynb      data         mglearn
03-unsupervised-learning.ipynb  06-algorithm-chains-and-pipelines.ipynb     README.md            environment.yml  preamble.py

(base) root@040a6abb468b:/introduction_to_ml_with_python# (base) root@31962e40c4e8:/#  jupyter notebook --ip=0.0.0.0 --allow-root
[I 13:40:42.077 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.7/site-packages/jupyterlab
[I 13:40:42.077 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 13:40:42.081 NotebookApp] Serving notebooks from local directory: /
[I 13:40:42.082 NotebookApp] The Jupyter Notebook is running at:
[I 13:40:42.082 NotebookApp] http://(31962e40c4e8 or 127.0.0.1):8888/?token=b17ae3b8734a4f9e9ca8966549f4921e1b0b92f9b8c21138
[I 13:40:42.082 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 13:40:42.084 NotebookApp] No web browser found: could not locate runnable browser.
[C 13:40:42.084 NotebookApp] 

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://(31962e40c4e8 or 127.0.0.1):8888/?token=b17ae3b8734a4f9e9ca8966549f4921e1b0b92f9b8c21138
[I 13:40:55.489 NotebookApp] 302 GET / (172.17.0.1) 0.55ms
[I 13:41:02.760 NotebookApp] Writing notebook-signing key to /root/.local/share/jupyter/notebook_secret
[W 13:41:02.764 NotebookApp] Notebook introduction_to_ml_with_python/01-introduction.ipynb is not trusted
[I 13:41:03.467 NotebookApp] 302 GET /notebooks/introduction_to_ml_with_python/images/iris_petal_sepal.png (172.17.0.1) 0.96ms
[I 13:41:04.205 NotebookApp] Kernel started: f1e65f6f-4743-4e2a-bcc8-900016d4e998
[I 13:41:04.805 NotebookApp] Adapting to protocol v5.1 for kernel f1e65f6f-4743-4e2a-bcc8-900016d4e998
[I 13:43:04.181 NotebookApp] Saving file at /introduction_to_ml_with_python/01-introduction.ipynb
[W 13:43:04.183 NotebookApp] Notebook introduction_to_ml_with_python/01-introduction.ipynb is not trusted
[I 14:57:05.976 NotebookApp] Starting buffering for f1e65f6f-4743-4e2a-bcc8-900016d4e998:4d92028184f8491b89a300c250760954

dockerを起動したOSのブラウザで localhost:8888 を表示してください。

jupy1.png

tokenの欄に、b17ae3b8734a4f9e9ca8966549f4921e1b0b92f9b8c21138
をコピペ
and1.png

01-introduction.ipynbをクリック

and2.png

In[1]があるため、本より番号が1多くなっている。
図1-1 のグラフの数字がきめ細かい。

Out[8]
Python version: 3.6.3 |Anaconda, Inc.| (default, Nov 20 2017, 20:41:42) 
[GCC 7.2.0]
pandas version: 0.21.0
matplotlib version: 2.1.0
NumPy version: 1.13.3
SciPy version: 1.0.0
IPython version: 6.2.1
scikit-learn version: 0.20.dev0

それぞれ少しづつ版が新しいことを確認。

and3.png

日本語ではなく英語のまま。

in[87]
In [93]:

display(mglearn.plots.plot_logistic_regression_graph())
<graphviz.dot.Digraph at 0x7f071f5f16d8>

2. dockerを自力で構築する方へ

ここから下は、上記のpullしていただいたdockerをどういう方針で、どういう手順で作ったかを記録します。
上記のdockerを利用する上での参考資料です。本の続きを実行する上では必要ありません。
自力でdocker/anacondaを構築する場合の手順になります。
dockerfileを作る方法ではありません。ごめんなさい。

docker

ubuntu, debianなどのLinuxを、linux, windows, mac osから共通に利用できる仕組み。
利用するOSの設定を変更せずに利用できるのがよい。
同じ仕様で、大量の人が利用することができる。
ソフトウェアの開発元が公式に対応しているものと、利用者が便利に仕立てたものの両方が利用可能である。今回は、公式に配布しているものを、自分で仕立てて、他の人にも利用できるようにする。

python

DeepLearningの実習をPhthonで行って来た。
pythonを使う理由は、多くの機械学習の仕組みがpythonで利用できることと、Rなどの統計解析の仕組みもpythonから容易に利用できることがある。

anaconda

pythonには、2と3という版の違いと、配布方法の違いなどがある。
Anacondaでpython3をこの1年半利用してきた。
Anacondaを利用した理由は、統計解析のライブラリと、JupyterNotebookが初めから入っているからである。

docker公式配布

ubuntu, debianなどのOSの公式配布,gcc, anacondaなどの言語の公式配布などがある。
これらを利用し、docker-hubに登録することにより、公式配布の質の確認と、変更権を含む幅広い情報の共有ができる。dockerが公式配布するものではなく、それぞれのソフト提供者の公式配布という意味。

docker pull

docker公式配布の利用は、URLからpullすることで実現する。

docker Anaconda

anacondaが公式配布しているものを利用。

$  docker pull continuumio/anaconda3
Using default tag: latest
latest: Pulling from continuumio/anaconda3
Digest: sha256:e07b9ca98ac1eeb1179dbf0e0bbcebd87701f8654878d6d8ce164d71746964d1
Status: Image is up to date for continuumio/anaconda3:latest
OgawaKiyoshi-no-MacBook-Pro:docker-toppers ogawakiyoshi$ docker run -it -p 7777:7777 continuumio/anaconda3 /bin/bash

apt-get

(base) root@040a6abb468b:/# apt-get update

(base) root@040a6abb468b:/# apt-get install -y procps

(base) root@040a6abb468b:/# apt-get install -y vim

(base) root@040a6abb468b:/# apt-get install -y apt-utils

(base) root@040a6abb468b:/# apt-get install sudo

(base) root@040a6abb468b:/# apt-get install -y git

git

(base) root@f19e2f06eabb:/# git clone https://github.com/amueller/introduction_to_ml_with_python

3.docker hub 登録

ここからは、新たにソフトを導入したdockerを自分のhubに登録する方法です。
ご自身で何かソフトウェアを導入されたら、ぜひhubに登録することをお勧めします。
続きの作業を誰かに依頼したり、エラーがでてわからなくなったときに、対処方法を問い合わせるのにも役立ちます。

$ docker ps 
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                            NAMES
b28c065c8b45        continuumio/anaconda3            "/usr/bin/tini -- /b…"   21 hours ago        Up 21 hours                                                                                  elegant_gates       

$ docker commit b28c065c8b45  kaizenjapan/ pull kaizenjapan/conda3-amueller
sha256:2d26c8621bf9cc3c2400477a9db98bb21a953fdbe53c22da395ca4a80b15261f

$ docker push  kaizenjapan/ pull kaizenjapan/conda3-amueller
The push refers to repository [docker.io/kaizenjapan//conda3-amueller]
b6d479cc3a0f: Pushing [==>                                                ]  68.41MB/1.453GB
6410333f34cf: Mounted from kaizenjapan/anaconda-keras-ten 
cf342e34eca3: Mounted from kaizenjapan/anaconda-keras-ten 
cea95006e36a: Mounted from kaizenjapan/anaconda-keras-ten 
0f3a12fef684: Mounted from kaizenjapan/anaconda-keras-ten 


参考資料(reference)

dockerで機械学習 with anaconda(1)「ゼロから作るDeep Learning - Pythonで学ぶディープラーニングの理論と実装」斎藤 康毅 著
https://qiita.com/kaizen_nagoya/items/a7e94ef6dca128d035ab
dockerで機械学習with anaconda(2)「ゼロから作るDeep Learning2自然言語処理編」斎藤 康毅 著
https://qiita.com/kaizen_nagoya/items/3b80dfc76933cea522c6
dockerで機械学習 with anaconda(3)「直感Deep Learning」Antonio Gulli、Sujit Pal 第1章,第2章
https://qiita.com/kaizen_nagoya/items/483ae708c71c88419c32

dockerで機械学習(71) 環境構築(1) docker どっかーら、どーやってもエラーばっかり。
https://qiita.com/kaizen_nagoya/items/690d806a4760d9b9e040
dockerで機械学習(72) 環境構築(2) Docker for Windows
https://qiita.com/kaizen_nagoya/items/c4daa5cf52e9f0c2c002
dockerで機械学習(73) 環境構築(3) docker/linux/macos bash スクリプト, ms-dos batchファイル
https://qiita.com/kaizen_nagoya/items/3f7b39110b7f303a5558
dockerで機械学習(74) 環境構築(4) R 難関いくつ?
https://qiita.com/kaizen_nagoya/items/5fb44773bc38574bcf1c
dockerで機械学習(75)環境構築(5)docker関連ファイルの管理
https://qiita.com/kaizen_nagoya/items/4f03df9a42c923087b5d

OpenCVをPythonで動かそうとしてlibGL.soが無いって言われたけど解決した。
https://qiita.com/toshitanian/items/5da24c0c0bd473d514c8

サーバサイドにおけるmatplotlibによる作図Tips
https://qiita.com/TomokIshii/items/3a26ee4453f535a69e9e

Dockerでホストとコンテナ間でのファイルコピー
https://qiita.com/gologo13/items/7e4e404af80377b48fd5

Docker for Mac でファイル共有を利用する
https://qiita.com/seijimomoto/items/1992d68de8baa7e29bb5

「名古屋のIoTは名古屋のOSで」Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門
https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af

64bitCPUへの道 and/or 64歳の決意
https://qiita.com/kaizen_nagoya/items/cfb5ffa24ded23ab3f60

ゼロから作るDeepLearning2自然言語処理編 読書会の進め方(例)
https://qiita.com/kaizen_nagoya/items/025eb3f701b36209302e

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(document history)

ver. 0.10 初稿 20181007
ver. 0.11 誤記訂正 20181014
ver. 0.12 みだし、参考文献追記 20181019

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?