参考
- OpenML公式ウェブサイト
- OpenML公式ドキュメント
- scikit-learnでの使用
- Pythonガイド
- github.ioのPythonガイド
- FlowとRunのチュートリアル
- 実行に用いたpipenvの環境ファイル
- dobachi openml_sklearn_example
- 公式Examples
メモ
概要
OpenML公式ドキュメント によると、以下の定義。
An open, collaborative, frictionless, automated machine learning environment.
OpenML公式ウェブサイト によると、
- Dataset
- Task
- データセットと機械学習としての達成すべきこと
- Flow
- 各種フレームワークに則った処理パイプライン
- Run
- あるFlowについてハイパーパラメータを指定し、あるTaskに対して実行したもの
のレポジトリが提供されている。 これらはウェブサイトから探索可能。
Dataset
Datasetが登録されると機械的にアノテーションされたり、分析されたりする。 パット見でデータの品質がわかるようになっている。
Task
データセットに対する目標(と言ってよいのか。つまり識別、回帰など)、学習用、テスト用のデータのスプリット、 どのカラムを目的変数とするか、などが セットになったコンテナである。
機械的に読めるようになっている。
Flow
処理パイプラインはFlowとして登録され、再利用可能になる。 特定のTaskに紐づく処理として定義される。
フレームワークにひもづく。
Run
OpenML APIを用いて実行ごとに自動登録される。
scikit-learnで試す
Pythonガイド を参考に試してみる。 一通り、Pandas、scikit-learn、openml、pylzmaをインストールする。 なお、あらかじめliblzma-devをインストールしておくこと。 詳しくは以下の「lzmaがインポートできない」節を参照。
実行に用いたpipenvの環境ファイル に用いたライブラリが載っている。
Pythonガイド を眺めながら進めようと思ったが、 https://openml.github.io/openml-python/develop/examples/introduction_tutorial.html のリンクが切れていた。 何となく見るとgithub.ioだったので探索してみたら、 github.ioのPythonガイド が見つかった。
こっちを参考にしてみる。
FlowとRunのチュートリアル を元に、チュートリアルを実施。 また特に、 公式Examples あたりを参考にした。 詳しくは、 dobachi openml_sklearn_example 内のnotebookを参照。
トラブルシュート
lzmaがインポートできない
以下の内容のエラーが生じた。
1 | /home/dobachi/.local/share/virtualenvs/openml_sklearn_example-YW762zpK/lib/python3.7/site-packages/pandas/compat/__init__.py:85: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError. |
lzma関連のlibをインストールしておいてから、Python環境を構築すること。
つまりpyenvとpipenvで環境構築する前にliblzma-devをインストールしておく。
1
$ sudo apt install liblzma-dev
所感
歴史があり、情報が集まっている。 ドキュメントが中途半端なせいで、初見ではとっつきづらいかもしれないが、ライブラリひとつでデータ発掘・共有に始まり、処理パイプラインの機械化まで対応しているのは有益。