読者です 読者をやめる 読者になる 読者になる

ネット偽善者でもいいじゃない

悩んでるなら面白いマンガ読もう

scikit-learnを用いた時にImportErrorが出てしまう場合にanacondaで対処した

プログラミング python

ImportErrorはpathが違うから・・・・?

結論としては、anacondaをインストールして用いることで解決できました

【問題】 pyenvでインストールしたpythonからはscikit-learnからdatasetsやlinear_modelをimportしようとしても ImportErrorが起きてしまう

技術評論社の「データサイエンティスト養成読本」を読んでます

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

128ページからの"scikit-learn入門"が目当てだったのですが

リスト1 人工的データを使った線形回帰のプログラム

を実行してみようとすると、下記のようなエラーが出てきてしまってました

(pythonスクリプトファイル名は training.pyにしています)

Traceback (most recent call last):
File "training.py", line 5, in <module>
from sklearn import linear_model, datasets
ImportError: cannot import name 'linear_model'

環境はMac OSX 10.9

python 3.4.3です

必要なmoduleは養成読本の通りpipでインストールしました

pyenvで入れたpythonからだと実行できない・・・

色々調べてみると、python2.x系(python 2.6以上?)でないとだめだとか、python3.x系だとコンパイルが通らないとか

一度uninstallして入れなおせとかpathを通さないとだめだみたいなのが色々と出てくるのですが、いまいちうまくいきませんでした

scikit-learnをインストールした - 西尾泰和のはてなダイアリー

Mac OS X 10.9.4にpython2.7開発環境+scikit-learn実行環境構築 - うっかり技術支援部署に配属されたので勉強する

ImportError: cannot import name check_arrays · Issue #4624 · scikit-learn/scikit-learn · GitHub

python - ImportError: cannot import name inplace_column_scale - Stack Overflow

python - ImportError in importing from sklearn: cannot import name check_build - Stack Overflow

Python: scikit-learn: ImportError: cannot import name __check_build at Mark Needham

解決策としてanacondaを用いて実行してみるとうまくいきました

AnacondaはPython数値計算環境を構築するために様々なパッケージをまとめた無料のディストリビューションです

引用元 Python数値計算環境Anacondaの導入

ということで、anacondaを入れれば大体必要なものは全てインストールされているという代物です 機械学習を始める人には必要なものが一通り入っていると思われるので、これを使えば便利なのではいかと思いインストールしてみました

環境構築はMacで行ったのでその方式でいきます

pyenvは既に入っている前提です

$ pyenv install --list

コマンドライン(ターミナル、コンソール)から実行するとインストールリストが出てきます

2015年9月26日現在ではanacondaの最新は

anaconda3-2.3.0

だったので、これをインストールします

$ pyenv install anaconda3-2.3.0

環境にもよりますがだいたい5 ~ 10分ぐらいかかりますので待ちます

インストールが終わったら

$ pyenv versions

でanacondaがインストールされているのを確認します

うまくいっていたら

system

*3.4.3 (set by /Users/hogehoge/.pyenv/version)

anaconda3-2.3.0

みたいにでてくると思うので(この時自分は3.4.3を使っていましたので *マークがついています)

$ pyenv global anaconda3-2.3.0 
$ pyenv rehash

として確認まで行うと、無事anacondaが使えるようになっているはずです

確認

$ python --version
Python 3.4.3 :: Anaconda 2.3.0 (x86_64)

これでanacondaが使えるようになりました

anacondaとscikit-learnをupdateしてあげる

念のため、update作業を行います

$ conda update conda

をした後 scikit-learnもupdateしてあげます

参考 Installing scikit-learn — scikit-learn 0.16.1 documentation

$ conda update scikit-learn

これで、後はpythonスクリプトを実行してあげれば無事scikit-learnからimportされたmoduleが使用できるはずです

なんで自分で入れたpythonで実行できないかは結局わかりませんが・・・どなたかわかったら教えてほしいです(^_^;)