作業環境 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メソッドを用いた書き方比較
以下は同じ
'%.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://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に複数の値が渡されているらしい
plt.hist()メソッド詳細
無駄に時間かかった・・・
正規分布とt分布
グーグル検索した結果を簡単にまとめると以下の通り
正規分布は、平均値付近にデータが集まっている分布のこと(例:学校の定期テストや入試の点数)
t分布は、データは少ないが正規分布すると推測される集団の平均などを推定する際に用いられる
また、2つの分布の平均の差の有意性を測るt検定にも用いられる
3章
MACでのバックスラッシュの入力
Option + ¥ → \
参考文献 飯塚修平著「ウェブ最適化ではじめる機械学習」