1.すぐに利用したい方へ(as soon as)
「Feature Engineering for Machine Learning」Alice Zheng 著
http://shop.oreilly.com/product/0636920049081.do
<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words in order.
docker
dockerを導入し、Windows, Macではdockerを起動しておいてください。
Windowsでは、BiosでIntel Virtualizationをenableにしないとdockerが起動しない場合があります。
また、セキュリティの警告などが出ることがあります。
docker pull and run
$ docker pull kaizenjapan/anaconda-alice
$ docker run -it -p 8888:8888 kaizenjapan/anaconda-alice /bin/bash
以下のshell sessionでは
(base) root@f19e2f06eabb:/#は入力促進記号(comman prompt)です。実際には数字の部分が違うかもしれません。この行の#の右側を入力してください。
それ以外の行は出力です。出力にエラー、違いがあれば、コメント欄などでご連絡くださると幸いです。
それぞれの章のフォルダに移動します。
dockerの中と、dockerを起動したOSのシェルとが表示が似ている場合には、どちらで捜査しているか間違えることがあります。dockerの入力促進記号(comman prompt)に気をつけてください。
ファイル共有または複写
dockerとdockerを起動したOSでは、ファイル共有をするか、ファイル複写するかして、生成したファイルをブラウザ等表示させてください。参考文献欄にやり方のURLを記載しています。
複写の場合は、dockerを起動したOS側コマンドを実行しました。お使いのdockerの番号で置き換えてください。複写したファイルをブラウザで表示し内容確認しました。
(base) root@a64ea3c3dcfa:/# ls
bin dev feature-engineering-book introduction_to_ml_with_python lib64 mnt proc run srv tmp var
boot etc home lib media opt root sbin sys usr
(base) root@a64ea3c3dcfa:/# cd feature-engineering-book/
(base) root@a64ea3c3dcfa:/feature-engineering-book# ls
02.02_Binning.ipynb 06.01_PCA_on_MNIST_digits.ipynb
02.03-06_Counts.ipynb 07.00_Swiss_roll.ipynb
02.06-11_Log-Transformation_prediction.ipynb 07.01-02_K-means.ipynb
02.12-14_Box-Cox_Transform.ipynb 07.03-05_K-means_featurization.ipynb
02.12_Power_Transforms.ipynb 08.01_HOG_image_features.ipynb
02.17_Interaction_Features_Example.ipynb 08.02_Gaussian_filter.ipynb
03.01_Count_words.ipynb 09.01-05_[End-to-End_Example]_Recommender_Take_1.ipynb
03.02_Chunking_and_POS_Tagging.ipynb 09.06-14_[End-to-End_Example]_Recommender_Take_2.ipynb
04.01-06_Tf-idf.ipynb LICENSE
05.01-02_Regression_on_Categorical_Variable.ipynb README.md
05.05_Feature_Hashing.ipynb kmeans_featurizer.py
05.06_Bin_Counting.ipynb
##jupyter notebook
(base) root@a64ea3c3dcfa:/feature-engineering-book# jupyter notebook --ip=0.0.0.0 --allow-root
[I 03:55:05.549 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.7/site-packages/jupyterlab
[I 03:55:05.549 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 03:55:05.563 NotebookApp] Serving notebooks from local directory: /feature-engineering-book
[I 03:55:05.563 NotebookApp] The Jupyter Notebook is running at:
[I 03:55:05.563 NotebookApp] http://(a64ea3c3dcfa or 127.0.0.1):8888/?token=4eb7ea8cdb3ec343f6deeec5912a0585405a78ec847b47fd
[I 03:55:05.564 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 03:55:05.566 NotebookApp] No web browser found: could not locate runnable browser.
[C 03:55:05.567 NotebookApp]
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://(a64ea3c3dcfa or 127.0.0.1):8888/?token=4eb7ea8cdb3ec343f6deeec5912a0585405a78ec847b47fd
[I 03:55:19.841 NotebookApp] 302 GET / (172.17.0.1) 0.58ms
[W 03:55:19.847 NotebookApp] Clearing invalid/expired login cookie username-localhost-8888
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 continuumio/anaconda3 /bin/bash
実際にはjupyter notebookを利用していた他のpushをpull
apt
(base) root@f19e2f06eabb:/# apt update; apt -y upgrade
(base) root@f19e2f06eabb:/# apt install -y procps vim apt-utils
ソース git
(base) root@f19e2f06eabb:/# git clone https://github.com/alicezheng/feature-engineering-book
pip
(base) root@f19e2f06eabb:/deep-learning-from-scratch-2/ch01# pip install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl (1.3MB)
100% |████████████████████████████████| 1.3MB 2.0MB/s
distributed 1.21.8 requires msgpack, which is not installed.
Installing collected packages: pip
Found existing installation: pip 10.0.1
Uninstalling pip-10.0.1:
Successfully uninstalled pip-10.0.1
Successfully installed pip-18.0
便利 sh
(base) root@502e93a537bc:/deeplearning# vi py.sh
#!/bin/bash
for f in *.py
do
python $f
done
実行権を付与して実行。
(base) root@502e93a537bc:/deeplearning# chmod +x py.sh
(base) root@502e93a537bc:/deeplearning# ./py.sh
横道
他の本のdockerから始めるのも手かも。
$ docker pull kaizenjapan/anaconda-keras
$ docker run -it -p 8888:8888 -p 6006:6006 kaizenjapan/anaconda-keras /bin/bash
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/anaconda-deep-1
sha256:2d26c8621bf9cc3c2400477a9db98bb21a953fdbe53c22da395ca4a80b15261f
$ docker push kaizenjapan/anaconda-deep-1
The push refers to repository [docker.io/kaizenjapan/anaconda-deep-1]
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で機械学習(python:anaconda)「直感Deep Learning」Antonio Gulli、Sujit Pal 第1章,第2章
https://qiita.com/kaizen_nagoya/items/483ae708c71c88419c32
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
一覧
物理記事 上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff
量子(0) 計算機, 量子力学
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4
数学関連記事100
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d
言語・文学記事 100
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6
医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82
自動車 記事 100
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5
通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7
日本語(0)一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68
英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d
転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe
仮説(0)一覧(目標100現在40)
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df
Qiita(0)Qiita関連記事一覧(自分)
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6
鉄道(0)鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/26bda595f341a27901a0
安全(0)安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409
一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39
Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794
Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0
線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001
OSEK OS設計の基礎 OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3
Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8
++ Support(0)
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514
Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0
プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909
なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2
言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4
プログラムちょい替え(0)一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394
官公庁・学校・公的団体(NPOを含む)システムの課題、官(0)
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3
「はじめての」シリーズ ベクタージャパン
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb
AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869
プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945
LaTeX(0) 一覧
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792
自動制御、制御工学一覧(0)
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b
Rust(0) 一覧
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927
小川清最終講義、最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on the individual's experience. It has nothing to do with the organization or business to which I currently belong.
文書履歴(document history)
ver. 0.10 初稿 20181014 昼
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.