機械学習のリンク諸々

なんとか、機械学習の知識を習得しようともがいている。
英語のドキュメントが諸々ではあるけれど、
日本語での実践記事も数少ないがあるので、自分のためにまとめておきたい。

機械学習 実践(教師あり学習:回帰)(キカガク)
https://www.kikagaku.ai/tutorial/basic_of_machine_learning/learn/machine_learning_regression

最先端を、最短距離で身につける。初学者から始められる学習サイト
https://www.kikagaku.ai/

手を動かしながら学べるディープラーニングの優良なチュートリアル

Practical Deep Learning for Coders, v3
下記のリンク先の動画が勉強になりそう
https://course.fast.ai/index.html

SVM with polynomial kernel visualization

MIT OpenCourseWare (Youtube)

  1. Learning: Support Vector Machines

カテゴリー: 機械学習 | タグ: , , , | コメントする

db.sqlite3 の取り扱いについて学んだこと

Djangoの練習の中で、sqlite3 の操作が必要になった。

CUIだとsqlite3 が使えるが、正確にTableの名前を入れないと、
「そんな名前のTableはない」とErrorが出る。

そこで、役立ったのが、GUIのDB編集ツールの

DB Browser for SQLite

だった。

sqlitebrowser GUI version
から、Windows版のInstallerがGetできた。

Operation from open db to select db

簡単にDB操作がGUI上で行えるので、扱いやすい。

以下:sqlite3の操作例

カテゴリー: 未分類 | コメントする

VSCodeでのIndent Size 設定ついて

vscodeでPythonコードを書いているときに、ファイルSaveする際に、
Indent のサイズが2に変更されていて困っていた。

Setting.jsonを見返してみると・・・

autopep8Args の箇所の–indent-size が2となっていたので、
これが原因っぽい。

なので、この数字(2)を(4)へ変更しておく

カテゴリー: 未分類 | コメントする

[msys2] Package install Error

pacman をmsys2 で実行すると、”could not be looked up remotely”
とTerminalにメッセージが出て、packageの追加ができない。

$ pacman -S winpty
error: mingw32: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: mingw64: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: database 'mingw32' is not valid (invalid or corrupted database (PGP signature))
error: database 'mingw64' is not valid (invalid or corrupted database (PGP signature))
error: database 'msys' is not valid (invalid or corrupted database (PGP signature))

Googleでエラーメッセージを検索すると、
GitHubの msys2 / MSYS2-packages がHitしたので、そこに記載されたとおりに
実行していく。

XXXXXX@DESKTOP-C88BUUQ MSYS ~
$ pacman -Syu
error: mingw32: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: mingw64: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] U
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
:: Synchronizing package databases...
 mingw32                                                             537.8 KiB   722 KiB/s 00:01 [#######################################################] 100%
 mingw32.sig                                                         438.0   B   428 KiB/s 00:00 [#######################################################] 100%
error: mingw32: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: failed to update mingw32 (invalid or corrupted database (PGP signature))
 mingw64                                                             539.5 KiB   726 KiB/s 00:01 [#######################################################] 100%
 mingw64.sig                                                         438.0   B  0.00   B/s 00:00 [#######################################################] 100%
error: mingw64: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: failed to update mingw64 (invalid or corrupted database (PGP signature))
 msys                                                                213.4 KiB   369 KiB/s 00:01 [#######################################################] 100%
 msys.sig                                                            438.0   B  0.00   B/s 00:00 [#######################################################] 100%
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: failed to update msys (invalid or corrupted database (PGP signature))
error: failed to synchronize all databases

XXXXXX@DESKTOP-C88BUUQ MSYS ~
$ curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 61344  100 61344    0     0  48454      0  0:00:01  0:00:01 --:--:-- 48454

XXXXXX@DESKTOP-C88BUUQ MSYS ~
$ curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   119  100   119    0     0    314      0 --:--:-- --:--:-- --:--:--   317

XXXXXX@DESKTOP-C88BUUQ MSYS ~
$ pacman-key --verify msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
==> Checking msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig... (detached)
gpg: Signature made Mon, Jun 29, 2020  2:36:14 PM JST
gpg:                using DSA key AD351C50AE085775EB59333B5F92EFC1A47D45A1
gpg: Good signature from "Alexey Pavlov (Alexpux) <alexpux@gmail.com>" [full]

XXXXXX@DESKTOP-C88BUUQ MSYS ~
$ pacman -U msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
error: mingw32: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: mingw64: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: msys: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" is unknown
:: Import PGP key 4A6129F4E4B84AE46ED7F635628F528CF3053E04? [Y/n] Y
error: key "4A6129F4E4B84AE46ED7F635628F528CF3053E04" could not be looked up remotely
error: database 'mingw32' is not valid (invalid or corrupted database (PGP signature))
error: database 'mingw64' is not valid (invalid or corrupted database (PGP signature))
error: database 'msys' is not valid (invalid or corrupted database (PGP signature))
loading packages...
error: failed to prepare transaction (invalid or corrupted database)

XXXXXX@DESKTOP-C88BUUQ MSYS ~
$ pacman -U --config <(echo) msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
loading packages...
resolving dependencies...
looking for conflicting packages...

Packages (1) msys2-keyring-r21.b39fb11-1

Total Installed Size:  0.05 MiB
Net Upgrade Size:      0.03 MiB

:: Proceed with installation? [Y/n] Y
(1/1) checking keys in keyring                                                                   [#######################################################] 100%
(1/1) checking package integrity                                                                 [#######################################################] 100%
(1/1) loading package files                                                                      [#######################################################] 100%
(1/1) checking for file conflicts                                                                [#######################################################] 100%
:: Processing package changes...
(1/1) upgrading msys2-keyring                                                                    [#######################################################] 100%
==> Appending keys from msys2.gpg...
==> Locally signing trusted keys in keyring...
  -> Locally signing key 6E8FEAFF9644F54EED90EEA0790AE56A1D3CFDDC...
  -> Locally signing key D55E7A6D7CE9BA1587C0ACACF40D263ECA25678A...
  -> Locally signing key 123D4D51A1793859C2BE916BBBE514E53E0D0813...
  -> Locally signing key B91BCF3303284BF90CC043CA9F418C233E652008...
  -> Locally signing key 9DD0D4217D75A33B896159E6DA7EF2ABAEEA755C...
  -> Locally signing key 69985C5EB351011C78DF7F6D755B8182ACD22879...
==> Importing owner trust values...
gpg: setting ownertrust to 4
gpg: setting ownertrust to 4
==> Disabling revoked keys in keyring...
  -> Disabling key B19514FB53EB3668471B296E794DCF97F93FC717...
==> Updating trust database...
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   6  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   6  signed:   6  trust: 0-, 0q, 0n, 6m, 0f, 0u
gpg: depth: 2  valid:   6  signed:   0  trust: 6-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2021-06-19

とすると、冒頭で出ていた エラーメッセージが消える。

XXXXXX@DESKTOP-C88BUUQ MSYS ~
$ pacman -S winpty
resolving dependencies...
looking for conflicting packages...

Packages (1) winpty-0.4.3-1

Total Download Size:   0.49 MiB
Total Installed Size:  3.17 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 winpty-0.4.3-1-x86_64                                               500.5 KiB   668 KiB/s 00:01 [#######################################################] 100%
(1/1) checking keys in keyring                                                                   [#######################################################] 100%
(1/1) checking package integrity                                                                 [#######################################################] 100%
(1/1) loading package files                                                                      [#######################################################] 100%
(1/1) checking for file conflicts                                                                [#######################################################] 100%
(1/1) checking available disk space                                                              [#######################################################] 100%
:: Processing package changes...
(1/1) installing winpty                                        
カテゴリー: 未分類 | タグ: , | コメントする

msys2 環境 ルーチンワーク

msys2 package update

以下のコマンド入力で、msys2内のPacakgeをUpdateしてくれる。

$ pacman -Syuu

参考ページ: pipでアップデートするときのコマンド pip update

pip自体のUpdate

py -m pip install -U pip

PythonのVersionが複数入ってる場合

以下のように、3.8, 3.7 と2つのVersionが入っていることが確認できる。
こうした場合、python ランチャー(py.exe)を使うと、最新のPythonのVersionを自動で選択してくれる。

$ py --list-paths
Installed Pythons found by C:\Windows\py.exe Launcher for Windows *


 -3.8-64        D:\Users\xxxxx\AppData\Local\Programs\Python\Python38\python.exe
 -3.7-64        C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\python.exe


$ py -V
Python 3.8.2

pythonのVersionを指定して実行する必要がある場合は・・

$ py -3.7 sample.py
test

# こんなふうに (-version) でVersionを指定できる
$ py -V
Python 3.8.2

$ py -3.7 -V
Python 3.7.5

参考ページ:Pythonの複数バージョンの扱い方(Windowsの場合)

カテゴリー: python | タグ: | コメントする

[vscode] jupyter のショートカットを追加する

最近、google Colab を使っていたが、
久しぶりにvscode + jupyter Notebookを使ってみて、
ショートカットがDefaultで設定されていなかったので見直すことにした。

vscode で Keyboard Shortcutsの一覧は以下から参照できる。

歯車マーク > Keyboard Shortcuts

Keboard ShortCuts のページで”Notebook:”と入力すると、
JupyterNotebook 系のKeybinding が見られる。

とりあえず、”ノートブックのすべてのセルを実行”
を割り当てる。

Notebook Cell でFilterすると、”Run All Notebook Cell”がHitするので、
Ctrl+F9を割り当てた。

Run Cells Above 等は2020/Aug時点では、まだ機能追加されていない。

カテゴリー: 備忘録 | タグ: , | コメントする

Jupyter Notebookで、Google Chrome ブラウザを使う方法

ちょっとハマったのでメモしておく。

  1. コマンドプロンプトで、
    jupyter notebook –generate-config
    を実行する。
  2. “jupyter_notebook_config.py”の編集

    C:\Users\.jupyter\jupyter_notebook_config.py があるので、それをテキストエディタで開く。
  3. “c.NotebookApp.browser”の編集

c.NotebookApp.browser=”

c.NotebookApp.browser = u’\”C:/Program Files (x86)/Google/Chrome/Application/chrome.exe” %s’

行頭の”#”も消すのを忘れずに。(ここで20分ほどハマってた)

カテゴリー: python | タグ: , | コメントする

vscodeでvim を使う場合の注意点

vscodeで

<HOME>, <END>

を,

<C-a>, <C-e>

にキー割り当てできず、ちょっとハマってたのですが、
stackoverflow の以下の方法で解決しました。

setting.jsonに以下のように設定した。

    "vim.insertModeKeyBindings": [
        {
         "before": ["<C-a>"],
         "after": ["<esc>", "0", "i"]
        },
        {
         "before": ["<C-e>"],
         "after": ["<esc>", "$", "a"]
        }
カテゴリー: 未分類 | タグ: , | コメントする

Convert py to ipynb 2nd

ipynb へ変換するツール, jupytext

色々とipynb へ変換するツールを探していくうちに、

jupytext にたどり着いた。

変換するコマンドも他のツール同様シンプルなので、使いやすそう。

ipynb へ変換するコマンド

以下のQiitaの記事によると、jupyternotobook のCodeの部分だけ分けてGitで管理することもできそう。

https://qiita.com/cfiken/items/8455383f32ee19dfbba3

pip install 後に、試してみた。

ファイル名を引き継いだ、ipynbが以下のように自動生成される。

$ pip install jupytext --upgrade
Collecting jupytext
  Downloading https://files.pythonhosted.org/packages/bc/71/eaba4f15759a8295e51dd8bffcb5bbd076a2e1742da56509fe5ade1271ec/jupytext-1.5.2.tar.gz (677kB)
     |████████████████████████████████| 686kB 2.1MB/s
Requirement already satisfied, skipping upgrade: nbformat>=4.0.0 in /usr/lib/python3.7/site-packages (from jupytext) (5.0.7)
Collecting pyyaml
  Downloading https://files.pythonhosted.org/packages/64/c2/b80047c7ac2478f9501676c988a5411ed5572f35d1beff9cae07d321512c/PyYAML-5.3.1.tar.gz (269kB)
     |████████████████████████████████| 276kB 8.0MB/s
Collecting toml
  Downloading https://files.pythonhosted.org/packages/9f/e1/1b40b80f2e1663a6b9f497123c11d7d988c0919abbf3c3f2688e448c5363/toml-0.10.1-py2.py3-none-any.whl
Requirement already satisfied, skipping upgrade: ipython-genutils in /usr/lib/python3.7/site-packages (from nbformat>=4.0.0->jupytext) (0.2.0)
Requirement already satisfied, skipping upgrade: jupyter-core in /usr/lib/python3.7/site-packages (from nbformat>=4.0.0->jupytext) (4.6.3)
Requirement already satisfied, skipping upgrade: traitlets>=4.1 in /usr/lib/python3.7/site-packages (from nbformat>=4.0.0->jupytext) (4.3.3)
Requirement already satisfied, skipping upgrade: jsonschema!=2.5.0,>=2.4 in /usr/lib/python3.7/site-packages (from nbformat>=4.0.0->jupytext) (3.2.0)
Requirement already satisfied, skipping upgrade: decorator in /usr/lib/python3.7/site-packages (from traitlets>=4.1->nbformat>=4.0.0->jupytext) (4.4.1)
Requirement already satisfied, skipping upgrade: six in /usr/lib/python3.7/site-packages (from traitlets>=4.1->nbformat>=4.0.0->jupytext) (1.13.0)
Requirement already satisfied, skipping upgrade: pyrsistent>=0.14.0 in /usr/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.0.0->jupytext) (0.16.0)
Requirement already satisfied, skipping upgrade: importlib-metadata; python_version < "3.8" in /usr/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.0.0->jupytext) (1.5.0)
Requirement already satisfied, skipping upgrade: attrs>=17.4.0 in /usr/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.0.0->jupytext) (19.3.0)
Requirement already satisfied, skipping upgrade: setuptools in /usr/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.0.0->jupytext) (41.6.0)
Requirement already satisfied, skipping upgrade: zipp>=0.5 in /usr/lib/python3.7/site-packages (from importlib-metadata; python_version < "3.8"->jsonschema!=2.5.0,>=2.4->nbformat>=4.0.0->jupytext) (3.0.0)
Installing collected packages: pyyaml, toml, jupytext
    Running setup.py install for pyyaml ... done
    Running setup.py install for jupytext ... done
Successfully installed jupytext-1.5.2 pyyaml-5.3.1 toml-0.10.1

$ jupytext --to notebook 41_1_a_1.py
[jupytext] Reading 41_1_a_1.py
[jupytext] Writing 41_1_a_1.ipynb

python スクリプト更新後、もう一度実行すると、上書きしてくれる(オプション不要)

$ jupytext --to notebook 41_1_a_1.py
[jupytext] Reading 41_1_a_1.py
[jupytext] Writing 41_1_a_1.ipynb (destination file replaced)

変換後に気づいたpythonスクリプトへの細かい修正

ipynbを見ると、もとのPythonスクリプトに改行が不必要にあると、
そこが空白Cellとしてipynbへ変換されてしまうので、
notebookがかえって見づらくなってしまうことがある。

それを防ぐために、jupytext でpyスクリプトを変換する前に、
以下の点を置換して修正することにした。

正規表現を使って, py to ipynb を 見やすいように整理する。

1. 3つ以上の改行がある場合、2つにする。

(\r\n){3,}
->
\r\n\r\n

2. 文章の終わりに改行を加える

。\r\n
->
。  \r\n

3. 文章ブロック内で、コードブロックが開始する前に、改行を加える

^#~~~python
->
\r\n#~~~python
カテゴリー: 未分類 | タグ: , | コメントする

How to solve No module named ‘pip’

pip のUpgradeで以下のErrorが出たあと、pip がUninsallされたままの状態となってしまい
少し焦った。

D:\git_repo\xxxxxx>pip install --upgrade pip
Collecting pip
  Downloading pip-20.2.1-py2.py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 3.3 MB/s
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.1.1
    Uninstalling pip-20.1.1:
ERROR: Could not install packages due to an EnvironmentError: [WinError 5] アクセスが拒否されました。: 'd:\\users\\xxxxxxxx\\appdata\\local\\programs\\python\\python38\\scripts\\pip.exe'
Consider using the `--user` option or check the permissions.

もちろん、以下のようにpipコマンドを実行しようとしても実行できない。

D:\git_repo\pyQ_practice>pip
Traceback (most recent call last):
  File "d:\users\xxxxxxxx\appdata\local\programs\python\python38\lib\runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "d:\users\xxxxxxxx\appdata\local\programs\python\python38\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "D:\Users\xxxxxxxx\AppData\Local\Programs\Python\Python38\Scripts\pip.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'pip'

結局、StackOverFlowのページの方法を試すことにより、pip の再インストールが
できた。

具体的には、以下の2コマンドを管理者権限のコマンド・プロンプトで実行すること

py -3 -m ensurepip
python pip install --upgrade pip

実行後には、以下のようなログがコマンド・プロンプトに表示され、
pipコマンドが実行できる様になる。

D:\>py -3 -m ensurepip
Looking in links: c:\Users\xxxxxxxx\AppData\Local\Temp\tmp28_wwpm3
Requirement already satisfied: setuptools in d:\users\xxxxxxxx\appdata\local\programs\python\python38\lib\site-packages (41.2.0)
Collecting pip
Installing collected packages: pip
Successfully installed pip-19.2.3

D:\>python pip install --upgrade pip
python: can't open file 'pip': [Errno 2] No such file or directory

D:\>python -m pip install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/bd/b1/56a834acdbe23b486dea16aaf4c27ed28eb292695b90d01dff96c96597de/pip-20.2.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 19.2.3
    Uninstalling pip-19.2.3:
      Successfully uninstalled pip-19.2.3
Successfully installed pip-20.2.1

D:\>

また、

Python公式ドキュメントの Do I need to install pip? のページで、
get-pip.py を実行することでも、pipだけを再インストールできそう。

カテゴリー: python | タグ: , | コメントする

複数のipynbファイルの結合

現在、PyQにてpandasの操作を学習中であるが・
複数のipynb ファイルを’cat’結合したら、結合したファイルをJupyter NoteBookで
読み込めずErrorとなった。

Manual で直そうと10分ほど、テキストエディタでTryしてみたが、Errorが解消されないため、自分で修正するのを断念。

Google で検索したところ、stackoverflow でipynb の結合方法を発見。

-> nbmerge コマンドを以下のように投げるとできるようだ。

XXXXX@DESKTOP-C88BUUQ MSYS /d/git_repo/practice_scripts/pyQ_test/93_1 Pandas_Series
$ nbmerge 1.ipynb 2.ipynb 3.ipynb 4.ipynb -o merge_1_a.ipynb

ただし、nbmerge と、nbformat が必要なので、最初にpip install でinstallしておくこと。

XXXXX@DESKTOP-C88BUUQ MSYS /d/git_repo/practice_scripts/pyQ_test/93_1 Pandas_Series
$ pip install nbmerge

XXXXX@DESKTOP-C88BUUQ MSYS /d/git_repo/practice_scripts/pyQ_test/93_1 Pandas_Series
$ pip install nbformat

元ネタ:https://stackoverflow.com/questions/33957418/merging-two-noteboooks-into-one-in-jupyter-ipython

カテゴリー: python | タグ: , , , | コメントする