ウェブ最適化ではじめる機械学習 備忘録

作業環境
MacBook Pro (Retina, 13-inch, Early 2015)
macOS Catalina 10.15.7
プロセッサ 2.7 GHz Intel Core i5
メモリ 8 GB 1867 MHz DDR3
Anaconda Navigator 1.6.4
jupyter notebook 4.3.1
*Anaconda再インストール後は以下のバージョン
Anaconda Navigator 1.10.0
jupyter notebook 6.1.4
numpy 1.19.2
matplotlib 3.3.2
pymc 3.9.3
urllib3 1.25.11

参考文献 飯塚修平著「ウェブ最適化ではじめる機械学習」


1章

注:事前にpltとして導入済み

from matplotlib import pyplot as plt

複数のグラフを同一座標で重ねて表示する

参考:https://techacademy.jp/magazine/39544

変数を別々にして、それぞれplotすれば良い

グラフの定義域を変える

参考:https://rikei-life.com/2020/04/26/python-graph/

x軸はplt.xlim()、y軸はplt.ylim()

グラフにラベリングする

plt.plot(label = "ラベル名")

ラベル表示場所はplt.legend(loc=”場所”)

例えばupper rightで右上など

グラフを並べて表示

参考1:https://qiita.com/trami/items/bd54f22ee4449421f2bc

add_subplot(行数, 列数, 番号)

参考2:https://qiita.com/nkay/items/d1eb91e33b9d6469ef51

詳細設定はこっちにたくさん

ソート

参考:https://docs.python.org/ja/3/howto/sorting.html

xps = sorted(zip(xs, ps), key=lambda xp: xp[1], reverse=True)

zipで2つにまとめ、xp[1]で2つ目指定、reverse=Trueで降順指定

ラムダ式

参考:https://qiita.com/nagataaaas/items/531b1fc5ce42a791c7df

lambdaは無名関数、いちいちdef使わずに関数作れる

グラフに注釈や矢印

参考1:https://python.atelierkobato.com/annotate/

.annotateの主な機能

参考2:https://qiita.com/nkay/items/d1eb91e33b9d6469ef51

さらに詳しい機能

%とformatメソッドを用いた書き方比較

参考:https://uxmilk.jp/40547

以下は同じ

'%.3f' % hm_thetas.max()
'{:.3f}'.format(hm_thetas.max())

以後は後者に書き換える

2章

pymc3のインストール

参考:https://qiita.com/tttamaki/items/7177ba996c1c73880392

anacondaを使っているのでcondaコマンドでインストール

pymc3のインポートでエラー出まくり

エラー1:AttributeError: module ‘theano’ has no attribute ‘gof

参考:https://publicjournal.hatenablog.com/entry/2019/09/20/230600

$ conda update -n base conda
$ conda update --all

言われるがままに実行すると、jupyterが消えたので再インストール

参考:https://ymgsapo.com/2019/01/28/anaconda-jupyter-notebook/#Jupyter

エラー2:ImportError: Version check of the existing lazylinker compiled file. Looking for version 0.211, but found None. Extra debug information: force_compile=False, _need_reload=True

エラー3:’stdio.h’ file not found. #include_next

http://engmng.blog.fc2.com/blog-entry-89.html

https://qiita.com/jyori112/items/766563384d6a9d410212

https://stackoverflow.com/questions/50793797/importerror-version-check-of-the-existing-lazylinker-compiled-file-looking-for

https://discourse.pymc.io/t/errors-in-importing-pymc3/1314

この辺を参考に考えるも、theanoは正常にインストールされているように思える

色々やりすぎてごちゃついてきたので、もういっそのことanacondaをクリーンにして再インストールすることに

anacondaアンインストールと再インストール

アンインストール:https://qiita.com/nemui_/items/210d297493ff176d31fe

インストール:https://ai-inter1.com/python-install/#AN2

再インストールでpathが変わってcondaコマンド使えない

参考:https://qiita.com/funabashi800/items/c13c4f742f43d9ebdd86

$ open ~/.bash_profile

で.bash_profileのファイルにpathを追加

エラー4:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

参考:https://qiita.com/nishina555/items/e23d73067a5cac182a63

以前Xcodeごと廃棄した(理由は後述)ので、CommandLineToolsが無かったようだ

$ xcode-select --install

でインストール

エラー5:ld: unsupported tapi file type ‘!tapi-tbd’ in YAML file

参考:https://stackoverflow.com/questions/63592445/ld-unsupported-tapi-file-type-tapi-tbd-in-yaml-file

参考ページの1つ目の回答はHomebrewを使っていたみたいだが、初めはよく分からず

最終的には2つ目の回答(要するにCommandLineToolsをダウングレード)で解決

$ sudo rm -rf /Library/Developer/CommandLineTools

で現在のCommandLineTools(Apple clang version 12.0.0 (clang-1200.0.32.27))を削除

https://developer.apple.com/download/more/

から直接CommandLineTools for Xcode 11.5(Apple clang version 11.0.3 (clang-1103.0.32.62))をインストール

ここに行き着くまでに下記も参考にした

参考1:https://memoteki.net/archives/1005

Xcodeアプリを開いて・・・という解決策のため、アプリをインストールしたかったが・・・

空き領域が足りないため、製品をインストールできません。

そもそも前述(Xcodeごと廃棄)の理由はこれ

参考2:https://monaga.site/not-enough-disk-space-available-to-install-the-product/

アップルサイトから直接インストールするといけるらしい、と知りXcode_12.2.xipをインストール

しかしファイルの破損で開けず・・・

Xcode_12.1.xipも同様の現象

仕方ないのでターミナルでインストールしようか調べる

参考3:https://lunalunadesign.net/2020/06/835/

ただそもそもの原因はCommandLineToolsなので、とりあえずバージョン確認

$ gcc --version

ここで初めの参考ページ2つ目の回答をおもむろに見て、バージョンをダウングレードすることにしてみたら、結果うまく行った

参考4:https://discussionsjapan.apple.com/thread/250787533

ちなみにターミナルでパスワード入力しても鍵マークは動かない

これでようやく2章先に進めそうだ・・・

久々にランさせたらエラー5再び・・・

どこのページかは忘れたが、確かMacOSをアップデートすると自動的にCommandLineToolsも最新になる、と書いていたような

バージョンを調べると案の定、Apple clang version 12.0.0 (clang-1200.0.32.27)に戻っていた・・・

また同じ作業、備忘録に残しておいて良かった・・・

TypeError: hist() got multiple values for argument ‘bins’

plt.hist(m_a, range(3, 5), bins=50, density=True)
plt.xlabel(r'$m_A$')
plt.ylabel(r'$p(m_A)$')
plt.show()

正しくは「range “=” (3, 5)」

参考1=https://teratail.com/questions/262076

binsに複数の値が渡されているらしい

参考2=https://pythondatascience.plavox.info/matplotlib/%E3%83%92%E3%82%B9%E3%83%88%E3%82%B0%E3%83%A9%E3%83%A0

plt.hist()メソッド詳細

無駄に時間かかった・・・

正規分布とt分布

グーグル検索した結果を簡単にまとめると以下の通り

正規分布は、平均値付近にデータが集まっている分布のこと(例:学校の定期テストや入試の点数)

t分布は、データは少ないが正規分布すると推測される集団の平均などを推定する際に用いられる

また、2つの分布の平均の差の有意性を測るt検定にも用いられる

3章

MACでのバックスラッシュの入力

Option + ¥ → \

参考文献 飯塚修平著「ウェブ最適化ではじめる機械学習」


シェアする

  • このエントリーをはてなブックマークに追加

フォローする