Python 3.4.0でscikit-learnがインストールできない?
Python 3.4.0でscikit-learnをインストールしようとしたらこんなエラーが出ました。
sklearn/cluster/_k_means.c:7955:19: error: no member named 'f_tstate' in 'struct _frame' (*frame)->f_tstate = tstate; ~~~~~~~~ ^
調べてみたところCythonのエラー?っぽいです。
BUG/BLD 3.4 compatibility of cython c files #1311
https://github.com/statsmodels/statsmodels/issues/1311
とりあえず(pythonの)バージョン落として対処します。
分かり次第対策書きます。
変分ベイズについての資料まとめ(随時更新)
変分ベイズとは?
平均場近似、変分推論、ベイズ学習など様々な呼び方があります。
フリーで読める解説だとこれが一番わかりやすかったです。
自然言語処理のための変分ベイズ法
http://www.ism.ac.jp/~daichi/paper/vb-nlp-tutorial.pdf
CiNiiユーザならこのシリーズがおすすめです。
ベイズ学習[I] : 統計的学習の基礎
http://ci.nii.ac.jp/naid/110003230932/
PRML関連のまとめ
PRMLの第10章が変分ベイズについての話です。
とても詳しく説明されているのですが、かなり難し目です。
なのでそこを解説した記事のまとめです。
PRML 読書会 #13 10章 近似推論法(変分ベイズ) - Mi manca qualche giovedi`? http://d.hatena.ne.jp/n_shuyo/20100412/prml
変分ベイズの定式化から近似事後分布の導出まで(1) | AKI LAB.
http://www.nejicolab.com/akip/?p=124
動く変分混合ガウス分布(実装編)- 動く PRML シリーズ(2) - Next MIDI Project
http://d.hatena.ne.jp/chrofieyue/20111202/1322832021
「パターン認識と機械学習」に挑戦 その1 ベイズ理論あたり(8章から11章まで)(自分のブログです...)
http://breakbee.hatenablog.jp/entry/2013/11/07/160817
統計物理との関連性
平均場近似(変分ベイズのこと)は「統計物理」という分野で育ってきた手法なので、統計物理を学ぶことが理解の助けになるかもしれません。
分かりやすかったのをいくつか。
統計学における平均場近似 - つれづれな学習帳
http://d.hatena.ne.jp/det/20121218
物理学者でない人にとって平衡統計力学とは
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/jnns-2007.pdf
最近の応用
グラフィカルモデルを変分ベイズによって計算すると、サンプリングするより計算量を大幅に削減できます。
そういった方向性の研究が多いようで、最近盛んに研究されているDeep Learning等にも変分ベイズが応用されているそうです。
(でもDeep Learningに関する資料は載せてません。見つかったら載せます。)
映像奮闘記: ノンパラメトリック平均場近似と確率伝播法の提案
http://mglab.blogspot.jp/2013/12/blog-post.html
変分ベイズ学習理論の研究動向 - IBIS2013 プログラム詳細
http://ibisml.org/ibis2013/details/#60
ディリクレ過程混合モデルへの変分推論適用について(これも自分のブログですが...)
http://breakbee.hatenablog.jp/entry/2013/11/30/222553
※追記 変分ガウス分布と、変分ディリクレ過程ガウス混合モデルですが、pythonの機械学習ライブラリであるscikit-learnに実装されています。詳しくはドキュメントをご参照ください。
2.1. Gaussian mixture models - scikit-learn
http://scikit-learn.org/stable/modules/mixture.html
変分ベイズの理論的な部分について
変分ベイズ法は「自由エネルギー」と呼ばれるものを最小化しています。
これは「対数周辺尤度」や「確率的複雑さ」と呼ばれるものだそうです。
自由エネルギーを最小化することがどういうことなのか、ということについて知っておくと理解が深まるかもしれません。
東京工業大学の渡辺澄夫先生のホームページに多くの情報が掲載されています。
渡辺澄夫先生のホームページ
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/index-j.html
渡辺澄夫先生の講演などの記録
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/backnumber.html
いくつか参考になったページをリンクしますと、
最尤推定はいつなら大丈夫?
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/mlesafety.html
一般と特殊
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/general-special.html
初めてのベイズ学習
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/Bayestheory.html
変分ベイズ学習の理論
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/vbtheory.html
変分ベイズ学習理論入門
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/var-bay.pdf
初めてのWAICとWBIC
http://watanabe-www.math.dis.titech.ac.jp/users/swatanab/waicwbic_j.html
あたりがとても参考になりました。
Python環境をhomebrew + pipで構築した時の注意事項
私はMac(今はOS X Mavericks)でPython環境を構築する時、
- Python本体はhomebrew
- 各ライブラリ(numpy, scipy, matplotlib, scikit-learn等)をpip
で管理しています。
この方式だと、homebrewでpythonをアップグレードした時、各ライブラリが読み込めなくなることがあります。
私の場合は特にmatplotlibで起こります。
そういう時はpipで各ライブラリを一旦アンインストールしてからインストールし直すと解決できます。
参考:pipの使い方 (2014/1バージョン) — そこはかとなく書くよん。
感想
この構築の仕方は割りと気に入ってるのですが、アップデートの際にエラーが起こって困ったりもします。
Python環境、どうやって構築するのが一番なんでしょうか...
Windows/Macで英語論文(pdf)を読む時に便利なこと
私は英語が苦手です。勉強も極力日本語文献でしています。
しかし、どうしても英語論文を読まなければいけないときが多々あります。
理系の英語論文を読む時、一番やっかいに思うのは「専門用語が分からない」ことです。
いちいちコピペして辞書引くのが大変面倒です。
そんな時に便利な知識(とプラグイン)を紹介したいと思います。
Mac
今更気づいたのですが、Macだと分からない単語の上で3本指でタップすると分からない単語の意味がポップアップ表示されます。デフォルト機能です。
参考 : Mac の基本:マルチタッチジェスチャ
(※1:pdf以外で使えます。プレビュー以外でも使えます。英単語以外も調べてくれます。)
(※2:Mavericksは3本指でシングルタップですが、Lionの場合はダブルタップだそうです。)
Windows
Weblioが、Adobe Readerで使えるポップアップ辞書プラグインを公開しています。
参考 : PDF文書で直接ポップアップ英語辞書が使える「Weblio英和辞典プラグイン」を公開しました。 | ウェブリオ株式会社 公式企業サイト
- その場で発音を聞くことができる
- その場で「Weblio単語帳」に追加できる(要アカウント、無料)
といった利点があります。単語帳がすごく便利です。(調べた単語、すぐに意味を忘れちゃうので。)
感想1
私は機械学習や自然言語処理といった分野に興味があるのですが、専門用語の英語が分からず苦労しています。
でも、英語論文を読めるようになるためには、きっと数をこなすことが一番の近道なんだろう...と思います。
大変そうなので、こういったサービスを使って気楽に取り組んでいきたいと思います。
英文法とかも復習したほうがいい気がしてきますし...
感想2
各分野ごとの英単語リストとかあったら便利そうですね。
ネット上で公開されてる教科書や論文から専門用語抽出して英和辞書作るとか...?
MacのSublime Text 2でCtrl + Bでのビルドをpython3に変更する
homebrewでpython3をインストールして、コマンド名が"python3"になってくれてるとします。
1. 設定ファイルの表示
# メニューからPackageフォルダを(Finderで)表示する "Preferences" -> "Browse Packages..." # Finderから設定ファイルを開く Python -> Python.sublime-build
2. 設定ファイルの変更
Python.sublime-buildを以下に変更
{ "cmd": ["python3", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" }
とりあえずPython3の設定はこれで完了...にします。
IPython Notebook とかはまた今度にします。
OS X Mavericksにpyreadlineがうまく入らない(けどよく考えたら必要なかった)話
python3でiPyhtonをインストールしようとした時に、適当にググって「windowsだとpyreadlineがいるのか、とりあえずmacでも入れよう」と思いインストールし、iPythonを入れたら起動時にエラーが出ました。
Traceback (most recent call last): File "/usr/local/bin/ipython3", line 9, in <module> load_entry_point('ipython==1.1.0', 'console_scripts', 'ipython3')() File "/usr/local/lib/python3.3/site-packages/IPython/__init__.py", line 118, in start_ipython return launch_new_instance(argv=argv, **kwargs) File "/usr/local/lib/python3.3/site-packages/IPython/config/application.py", line 544, in launch_instance app.initialize(argv) File "<string>", line 2, in initialize File "/usr/local/lib/python3.3/site-packages/IPython/config/application.py", line 89, in catch_config_error return method(app, *args, **kwargs) File "/usr/local/lib/python3.3/site-packages/IPython/terminal/ipapp.py", line 323, in initialize self.init_shell() File "/usr/local/lib/python3.3/site-packages/IPython/terminal/ipapp.py", line 339, in init_shell ipython_dir=self.ipython_dir, user_ns=self.user_ns) File "/usr/local/lib/python3.3/site-packages/IPython/config/configurable.py", line 349, in instance inst = cls(*args, **kwargs) File "/usr/local/lib/python3.3/site-packages/IPython/terminal/interactiveshell.py", line 320, in __init__ **kwargs File "/usr/local/lib/python3.3/site-packages/IPython/core/interactiveshell.py", line 475, in __init__ self.init_readline() File "/usr/local/lib/python3.3/site-packages/IPython/core/interactiveshell.py", line 1784, in init_readline import IPython.utils.rlineimpl as readline File "/usr/local/lib/python3.3/site-packages/IPython/utils/rlineimpl.py", line 28, in <module> from readline import * File "/usr/local/lib/python3.3/site-packages/readline.py", line 6, in <module> from pyreadline.rlmain import Readline File "/usr/local/lib/python3.3/site-packages/pyreadline/__init__.py", line 11, in <module> from . import unicode_helper, logger, clipboard, lineeditor, modes, console File "/usr/local/lib/python3.3/site-packages/pyreadline/clipboard/__init__.py", line 13, in <module> from .win32_clipboard import GetClipboardText, SetClipboardText File "/usr/local/lib/python3.3/site-packages/pyreadline/clipboard/win32_clipboard.py", line 37, in <module> from pyreadline.keysyms.winconstants import CF_UNICODETEXT, GHND File "/usr/local/lib/python3.3/site-packages/pyreadline/keysyms/__init__.py", line 23, in <module> raise ImportError("Could not import keysym for local pythonversion", x) NameError: name 'x' is not defined If you suspect this is an IPython bug, please report it at: https://github.com/ipython/ipython/issues or send an email to the mailing list at ipython-dev@scipy.org You can print a more detailed traceback right now with "%tb", or use "%debug" to interactively debug it. Extra-detailed tracebacks for bug-reporting purposes can be enabled via: c.Application.verbose_crash=True
pyreadlineのエラーっぽかったので再インストールしてみたら、
$pip3 install pyreadline Downloading/unpacking pyreadline Downloading pyreadline-2.0.zip (108kB): 108kB downloaded Running setup.py egg_info for package pyreadline package init file 'pyreadline/configuration/__init__.py' not found (or not a regular file) Installing collected packages: pyreadline Running setup.py install for pyreadline package init file 'pyreadline/configuration/__init__.py' not found (or not a regular file) Successfully installed pyreadline
って感じのエラーが出てました。
__init__.pyが見つかってないのにインストール成功ってでて、それが原因でiPythonの起動エラーが起きてる...?
対処のしようがなかったので、pyreadlineをアンインストールしてiPython起動してみたらちゃんと起動しました。
結論
mac(OS X Mavericks)でiPython使うのにpyreadlineは必要ない、というか入れたら起動しなくなる
iPythonのmacでの正しいインストール法
iPythonインストールするのにこちらの記事が参考になりました。
IPythonをインストールして使い始めた: 黄昏てなんかいられない
僕は何となくpyreadlineを入れてしまいこけましたが、この記事の通りやればうまく行くと思います。
OS X Mavericksにアップデートしたらhomebrewでインストールしたscipyがアップデートできなくなった話
問題
前までhomebrewを使ってpython2/numpy/scipyをインストールしていたのですが、Mavericksにしてからscipyのアップデートができなくなりました。
Error: scipy dependency tbb was built with the following C++ standard library: libc++ (from clang) This is incompatible with the standard library being used to build scipy: libstdc++ (from clang) Please reinstall tbb using a compatible compiler. hint: Check https://github.com/mxcl/homebrew/wiki/C++-Standard-Libraries
scipyが依存しているtbbというパッケージのエラーです。
MavericksになってからC++コンパイラが変わったらしく、tbbを再インストールし直せとのことですが直らず...
調べてみたら同じ問題に直面した方もいらっしゃったみたいです。
Unable to brew scipy on os x mavericks · Issue #48 · samueljohn/homebrew-python · GitHub
直らないので
いっそのこと全部インストールし直そう!と思いhomebrewごと再インストールしたのですが、いつのまにかnumpy/scipyがbrewのパッケージから無くなってました...
というわけで、pythonだけbrewで、他はpipでインストールしたらうまく行きました。
# pythonはbrewでインストール brew install python # 科学技術計算環境はpipでインストール pip install numpy pip install scipy pip install matplotlib pip install scikit-learn
pipで入れられるものは極力pipで入れたほうがいいのかもしれません。