めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

エラー解決:HPOlib2のインストール

HPOlib2はブラックボックス関数最適化問題のアルゴリズムをいくつか実装したベンチマークです。Anacondaでの仮想環境にて利用するまで。ドキュメントのインストール方法が失敗してしまったのでメモ。HPOlib2の前身となるHPOlibのドキュメントはこちら

インストールまで

環境

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"

git リポジトリをクローン

# openmlのインストール用
$ git clone https://github.com/openml/openml-python.git 
# HPOlibのインストール用
$ git clone https://github.com/automl/HPOlib2.git
# ConfigSpaceのインストール用
$ git clone https://github.com/automl/ConfigSpace.git

環境の作成

本日時点では Ubuntu, python3.5 でしか動作チェックsがされていないのでpython3.5を利用します。

$ conda create hpolib_env python=3.5 anaconda
$ source activate hpolib_env

関連ライブラリのインストール

$ curl https://raw.githubusercontent.com/automl/HPOlib2/master/requirements.txt | xargs -n 1 -L 1 conda install
$ curl https://raw.githubusercontent.com/automl/HPOlib2/master/optional-requirements.txt | xargs -n 1 -L 1 conda install

※上のコマンドはエラー結構出ます。

さらに

$ conda install numpy scipy pandas scikit-learn

を実行。

HPOlibのインストール

クローンしたHPOlib2ディレクトリ以下で

$ python setup.py install

ConfigSpaceのインストール

クローンしたConfigSpaceディレクトリ以下で

$ python setup.py install

openmlのインストール

クローンしたopenmlディレクトリ以下で

$ python setup.py install

最後にサンプルが実行できるかを確認(python test.py)して、終了。

test.py

from hpolib.benchmarks.ml import svm_benchmark

b = svm_benchmark.SvmOnMnist()

# Evaluate one configuration
res = b.objective_function(configuration=[5, -5])

# Evaluate one configuration on a subset
res = b.objective_function(configuration=[5, -5], dataset_fraction=0.5)

pynisherのインストール

実験の時のリソースの制限などをつけるために利用。研究での計算時間測定などには欠かせない。

pyrfrのインストール

pip install pyrfrでのインストールができなくなっているので、こちらを参考にしてインストール。

paper.hatenadiary.jp

その他エラーなど

Not foundとなったライブラリは適宜インストールしたのですが、

  File "/home/XXXX/lib/python3.4/site-packages/smac/epm/rf_with_instances.py", line 124, in _train
    self.rf.fit(data, rng=self.rng)
TypeError: fit() got an unexpected keyword argument 'rng'

のエラーがどうしても解決せず。

rf_with_instances.py#L124

121        self.rf = regression.binary_rss_forest()
122        self.rf.options = self.rf_opts
123        data = self.__init_data_container(self.X, self.y)
124        self.rf.fit(data, rng=self.rng)
125        return self

となっていますが、pyrfrでは the_forest.fit(data, rng)としてランダムフォレストを訓練してます。 適宜コードの中で訓練をする箇所のrng=...を書き換えて動作しました。バージョン変わったらまたここの仕様で詰まりそうなのでメモ。

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。