kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

PPP3: 機械学習 Jupyter Notebook

Jupyter Notebookはちょっと興味あった

$ pip install jupyter numpy scipy pandas matplotlib scikit-learn

全部一気に入れた!
そしてjupyter notebookを起動

$ jupyter notebook
[I 21:36:42.327 NotebookApp] Serving notebooks from local directory: /home/takahiro/study/PPP3-mac/mlprj
[I 21:36:42.327 NotebookApp] The Jupyter Notebook is running at:
[I 21:36:42.327 NotebookApp] http://localhost:8888/?token=35c9d79446a5f7833fc9f011c025ea98c0a21c009059850b
[I 21:36:42.327 NotebookApp]  or http://127.0.0.1:8888/?token=35c9d79446a5f7833fc9f011c025ea98c0a21c009059850b
[I 21:36:42.327 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 21:36:42.335 NotebookApp] 
    
    To access the notebook, open this file in a browser:
        file:///home/takahiro/.local/share/jupyter/runtime/nbserver-25841-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=35c9d79446a5f7833fc9f011c025ea98c0a21c009059850b
     or http://127.0.0.1:8888/?token=35c9d79446a5f7833fc9f011c025ea98c0a21c009059850b

おお起動した
NewからPython 3を選択
"Untitled"をクリックして"mlprj"に変更

In [ ]:

というセルにコードを入力してShift+Enter

In [1]: a = 1
        a
Out[1]: 1
In [ ]:

複数のセルにコードを書いたらどうなるのかな
セルひとつずつ実行してる感じか
上からだーっと実行してるわけではないみたい
そういう実行もできるだろうけど

InとかOutの右の数字は実行回数?
いや、通し番号か

便利なmagicコマンドというのがある
magicコマンドには%がついてて%lsmagicで一覧表示

Available line magics:
%alias  %alias_magic  %autoawait  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %conda  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %pip  %popd  %pprint  %precision  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode

Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

Automagic is ON, % prefix IS NOT needed for line magics.

%timeitで時間を計測
%ひとつはlineマジック

from random import randint
%timeit -n 10 -r 3 [randint(0, 100) for i in range(10)]
----
23.3 µs ± 732 ns per loop (mean ± std. dev. of 3 runs, 10 loops each)

次は%%timeit
%ふたつはcellマジック
適用範囲がその行だけかセル全体か、ってことかな

%%time
for i in range(10):
    randint(0,100)
----
CPU times: user 36 µs, sys: 5 µs, total: 41 µs
Wall time: 45.5 µs

Jupyter Notebookの便利な所は、作業をノートとして書き残しておける点です。

はてなブログに書いてる場合じゃないんじゃないかという気がしてきた

書き残したノートを、そのままGitリポジトリーに含んでGitHubに上げたり、ファイルを共有することで、作業内容をチームメンバーに共有できます。

mlprj.ipynbというファイルができてる
これを保存するってことだな

実行結果も合わせて保存されてるみたい
実行結果はセルの実行順に依存しそうだけどそういうのは問題ないのかな
うっかりへんなところで実行したらそれまで注意深く実行してきた結果が水の泡とか
保存やスナップショットもできるようではあるけど