scikit-learnを用いた時にImportErrorが出てしまう場合にanacondaで対処した
ImportErrorはpathが違うから・・・・?
結論としては、anacondaをインストールして用いることで解決できました
【問題】 pyenvでインストールしたpythonからはscikit-learnからdatasetsやlinear_modelをimportしようとしても ImportErrorが起きてしまう
技術評論社の「データサイエンティスト養成読本」を読んでます
データサイエンティスト養成読本 機械学習入門編 (Software Design plus)
- 作者: 比戸将平,馬場雪乃,里洋平,戸嶋龍哉,得居誠也,福島真太朗,加藤公一,関喜史,阿部厳,熊崎宏樹
- 出版社/メーカー: 技術評論社
- 発売日: 2015/09/10
- メディア: 大型本
- この商品を含むブログ (1件) を見る
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の数値計算環境を構築するために様々なパッケージをまとめた無料のディストリビューションです
ということで、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で実行できないかは結局わかりませんが・・・どなたかわかったら教えてほしいです(^_^;)