PyMC3をインストールする際に起きたトラブル色々(’19年9月秋の陣)
普段はPyMCを使っているんですが,とある勉強会でPyStanを推奨しているのでインストールしようとしたらバージョンの違いか何かでC++のコンパイラが動かず.もう諦めてPyMC3で頑張ろうと思ったら今度はPyMCも謎のエラー.Anacondaを再インストールしてPyMC3を再インストールしようとしたら色々とトラブルが発生しました.これのトラブルシューティングを記録しておきます.
結論を先にいうと,Anacondaと全モジュールのバージョンを上げました.
インストールしたバージョンなど
まず最初に,こいつらを再インストールしました.
その後に次のような症状が出ました
主な症状
PCを複数台持っているのですが,それぞれ違う症状が出ました.
PC1
PyMC3をインポートしようとしたら次のメッセージが.
ImportError: ArviZ is not installed. In order to use plot_trace:
pip install arviz
一応こういうのを参考にしましたが,解決せず..
discourse.pymc.io
arviz-devs.github.io
PC2
pm.traceplotを実行しようとすると次のようなエラーが出てくる.
AttributeError: module 'theano' has no attribute 'gof'
一応こういうのを参考にしましたが解決せず..
github.com
stackoverflow.com
解決方法
Pythonのバージョンを上げずに,Anacondaをアップデート
conda update -n base conda
次にモジュールをアップデート
conda update --all
結局どれが効いていたのか分からないけど,とにかくこれで直りました.
エラーメッセージ;visual studio code '$ file ' cannot be resolved. please open an editor
トラブル
Visual studio codeでjupyterを動かしたあとDebugを走らせようとすると,
visual studio code '$ file ' cannot be resolved. please open an editor
というダイアログが立ち上がった.
対処法
ダイアログにある「Opne launch.json」を開けたてから再びDebugしたら,何故か正常に動いた
エラーメッセージ「OverflowError: Exceeded cell block limit (set 'agg.path.chunksize' rcparam)」の対処
久々の更新
matplotlibを使ってみたらこんなメッセージが出た
OverflowError: Exceeded cell block limit (set 'agg.path.chunksize' rcparam)
該当するところは描画のところ
plt.plot([3万行くらいのリスト],[3万行くらいのリスト])
サイズのところが悪さをしていたらしい
plt.figure(figsize=(10, 6)) plt.subplot(2, 1, 1)
コイツらをコメント化したら治った
バイアス-バリアンス分解の導出を真面目にやる
どうもです.
只今,下記の書籍にを用いて勉強中です.
- 作者: 国友直人
- 出版社/メーカー: 朝倉書店
- 発売日: 2015/08/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
さぁ,なんということでしょう~,式の行間が開きすぎてよくわかりません.他の書籍で調べてもこんな感じで端折ってありますし,ネットで調べても「期待値の計算すれば上手いこと消えてほしい項が0になってくれます」みたいな感じで,きちんとと書いている記事が直ぐには見当たりませんでした.
なので,折角なので勉強がてらに式の展開をしてみます
展開
二乗誤差を計算すると
ここで,第三項について,とは定数であることを考慮すると,
よって,元の式は
Windows環境下でPython版のglmnetを使うとどうなるか?
夏のある日のこと,
私はLasso回帰を用いてあるデータを分析しようとしていた.
glmnetを呼び出して実行したところ,
x input must be a scipy float64 ndarray
とエラーメッセージが帰ってきた.
あれ?っと思ったけど,その日に扱っていたのは整数値だったことを思い出した.
しゃぁ無いから浮動小数点数にキャストしてみたんだ.
これで間違いは無いはず.
スクリプトを実行してみると・・・
raise ValueError('loadGlmlib does not currently work for windows')
ValueError: loadGlmlib does not currently work for windows
なん・・・だと・・・・
これwindows環境では動かんのかい!!
諦めて,教えてもらったAzureNotebookを使うかな.
StatsModelsとscikit-learnのElastic Net(Lasso回帰)を比較してみた
最近スパース推定の勉強会に参加しております.使っているテキストはこちら.
スパース推定法による統計モデリング (統計学One Point)
- 作者: 川野秀一,松井秀俊,廣瀬慧
- 出版社/メーカー: 共立出版
- 発売日: 2018/03/08
- メディア: 単行本
- この商品を含むブログを見る
今回使うデータはこちら.リンク先のヘッダの「Earn」が観測日の売上.「MaxTemp」が観測日の最高気温で「MinTemp」が最低気温.「Humi」は観測日の湿度.「Wind」は風の強さ.「Sun」は日照時間です.この「Earn」売上に直結する項目は何かを分析することが目的です.
ちなみに,このデータは昔お世話になったアイスクリーム屋さん・ハンバーガ屋さんの統計をイメージして作成したものです.なので実際の現象とは異なりますのであしからず.
各項目の相関係数を出してみるとこんな感じです.「Wind」がわざとらしいほどに無相関ですね.
各項目の関係をグラフにするとこんな感じ.
明らかに「Wind」がやる気がない数字が入ってますね.(まぁ,だってそういう風に作ったんだもん)
StatsModelsのエラスティックネットを用いてPythonスクリプトを書いてみた
統計を用いた分析をする時に「StatsModels」を使うか「scikit-learn」を使うか悩ましかったりします.StatsModelsはPandasのDataFrameを直接使うことができるので,私はどちらかというとStatsModelsを使うことが多いですね.現時点ではscikit-learnはDataFrameを受け付けないですが,そのうち変更があったらどうなるか分かりません.といってもscikit-learn昔書いたこちらの記事を参照にDataFrameからListに変換してあげればいいだけなんですけどね.
StatsModelsのエラスティックネットのドキュメントはこちらこちら
さて,下記のように書いてみました.
この書籍では罰則項を増加させたときの回帰係数を描画した解パス図というのを紹介していました.これに習って同じものを描いてみるとこんな感じ.
あれ?なんか変だぞ??この場合は一番売上に一番関係なさそうな「Wind」が先に消えるんじゃないの??
なんか変なのでscikit-learnではどういう振る舞いを見せるのかやってみました.
scikit-learnによるエラスティックネット
scikit-learnを使ったエラスティックネットはネット上にサンプルコードが山ほどあるのでここでは特に記載しません.Gitには上げておいたので,興味がある方は下記を参照ください.
さて,同じように解パス図を書くとこんな感じ.
あれ?StatsModelsとsklearnで結果が違う・・・・
そんな馬鹿な,,という感じですが原因不明です.これでは余りにも内容がない記事になってしまいますので,あとで加筆します.
ではそんな感じで.ではでは.