GPyOptをインストールする際の落とし穴

追記(2017/10/3): このエラーが発生していたのは前提パッケージとなるGPyなんですが、修正版が早速公開されたようです。 以下の記述は筆者がタイミング悪く修正される前のパッケージをインストールしたときのものです。 なので似たような事例があった場合の解決方法として残しておきます。 GPyOptをインストールする際は以下のコマンドを入力してください。

pip install GPy
pip install GPyOpt

余談ですがすでにparamzはバージョン0.8.5になっていて更新が早い……。


みなさん、機械学習楽しんでますか? そろそろ機械学習にも慣れてきてハイパーパラメーターチューニングに手を出そうと考えてる人も多いのでは? さてそんな人なら耳には入っているであろうパラメーターをベイズ推定によりサーチするパッケージの一つGPyOptについて。

まずはGPyをインストール

GPyOptはとても便利なパッケージなためインストールも簡単……ではありません。 まずはGPyというパッケージをインストールしなければなりません。 これは次のコマンドをコマンドプロンプトに打ち込みましょう。

pip install GPy

管理者権限が必要な場合は sudo もつけてくださいね?

GPyOptをインストール……できない!

問題はここから。 次に以下のコマンドを実行します。

pip install GPyOpt

すると次のエラーが。

Collecting GPyOpt
  Using cached GPyOpt-1.0.3.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/setup.py", line 6, in <module>
        from GPyOpt.__version__ import __version__
      File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/__init__.py", line 7, in <module>
        from GPyOpt.core.task.space import Design_space
      File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/core/__init__.py", line 4, in <module>
        from .bo import BO
      File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/core/bo.py", line 8, in <module>
        from ..core.task.cost import CostModel
      File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/core/task/__init__.py", line 4, in <module>
        from .objective import SingleObjective
      File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/core/task/objective.py", line 8, in <module>
        import GPy
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/GPy/__init__.py", line 6, in <module>
        from . import core
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/GPy/core/__init__.py", line 4, in <module>
        from GPy.core.model import Model
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/GPy/core/model.py", line 3, in <module>
        from .parameterization.priorizable import Priorizable
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/GPy/core/parameterization/__init__.py", line 9, in <module>
        from paramz import ties_and_remappings, ObsAr
    ImportError: cannot import name 'ties_and_remappings'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/

paramzの中にties_and_remappingsがないよというメッセージが。 あわててparamzの公式ドキュメントをみてみました。 ドキュメントの中にはこの関数はあるようです。

モジュールのバージョンが違った

ふとここでモジュールのバージョン違いでは?と考えバージョンを確認しました。

pip show paramz
Name: paramz
Version: 0.8.3
Summary: The Parameterization Framework
Home-page: https://github.com/sods/paramz
Author: Max Zwiessele
Author-email: ibinbei@gmail.com
License: BSD 3-clause
Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
Requires: scipy, six, decorator, numpy​​​​​​​

公式ドキュメントは0.7.4のものでした。 どうやらバージョンアップの際になくなったらしいです。 なのでいったんバージョンを下げて再インストール。

pip install paramz==0.7.4

今度はGPyOptインストール成功

もう一度GPyOptをインストール。

pip install GPyOpt

今度はうまくいきました! ちなみにアップグレードオプションをつけるとparamzが0.8.3に戻りますが0.7.4のままにするほうが無難だと思います。

ところで、なぜGPyOptはrequirement.txtをつけていないのだろうか? それがあればさきにpipでGPyを入れなければいけないという面倒なことをしなくて済むと思うのですが。

ちなみにparamz 0.8.3の公開日は2017/09/30だそう。 どおりで色々検索しても出ないわけだ……。

それではまた次の記事でお会いしましょう。最後までご覧くださりありがとうございました。

プログラミング未経験からでもAIスキルが身につくAidemy Premium




PythonやAIプログラミングを学ぶなら、オンライン制スクールのAidemy Premiumがおすすめです。
「機械学習・ディープラーニングに興味がある」
「AIをどのように活用するのだろう?」
「文系の私でもプログラミング学習を続けられるだろうか?」
少しでも気になることがございましたら、ぜひお気軽にAidemy Premiumの【オンライン無料相談会】にご参加いただき、お悩みをお聞かせください!