※これは2021/02/26の記事です。指摘などありましたら気兼ねなくコメントお願いします
はじめに
以下の記事を読み、これを参考にしてKaggleのNotebookでAutoGluon(特にAutoGluon-Tabular)を使ってみようと試みたのですが、すんなりとはできませんでした。
原因として、この一年でAutoGluon自体にいくつか変更があったことなどが考えられます。また推奨される利用方法も変わったようです。そこで、そのあたりを考慮し、「KaggleのNotebookでAutoGluonを使ってみる」というところまでを実現しました。作成したNotebookの紹介と実現するまでに発生したエラー・解決方法を備忘録として残しておきます。
結論
以下のようなNotebookを作成しました
# https://github.com/awslabs/autogluon
!pip install --upgrade pip
!pip install --upgrade setuptools
!pip install --upgrade "mxnet<2.0.0"
!pip install autogluon.tabular
import pandas as pd
from autogluon.tabular import TabularDataset, TabularPredictor
train= TabularDataset('../input/titanic/train.csv')
test = TabularDataset('../input/titanic/test.csv')
label='Survived'
time_limit=60
predictor = TabularPredictor(label=label).fit(train, time_limit=time_limit)
submission = pd.read_csv('../input/titanic/gender_submission.csv')
submission[label] = predictor.predict(test)
submission.to_csv('submission.csv', index=False)
submission.head()
Public Scoreは0.78229と算出され、望む実装ができているようです!簡単!素晴らしい!
しかし、ちょっと不安な出力も…ひとまず棚に上げます。
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
earthengine-api 0.1.252 requires google-api-python-client>=1.12.1, but you have google-api-python-client 1.8.0 which is incompatible.
エラー&解決の備忘録
大きく以下2点を実施しました。
- 他環境(Google Colab)での最新の成功例で試行
- 環境依存の問題?を確認
まずは、Google Colabでの最新の成功例を試してみました。以前書いた以下2件の記事でも紹介したコードです。
これは参考記事が公開されて以降のAutoGluonの変更点を考慮したものです。モジュールなどが異なります。TabularDataset
、TabularPredictor
を使うためにautogluon.tabular
をインポートします。このコードをすべてコピーして、実行してみたのですが以下のようなエラーが生じました。
READMEを参考にしたコマンドなのですがここに原因がありそうです。
!pip install --upgrade pip
!pip install --upgrade setuptools
!pip install --upgrade "mxnet<2.0.0"
!pip install --pre autogluon
from autogluon.tabular import TabularDataset, TabularPredictor
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-974358aaf144> in <module>
----> 1 from autogluon.tabular import TabularDataset, TabularPredictor
/opt/conda/lib/python3.7/site-packages/autogluon/tabular/__init__.py in <module>
1 import logging
2
----> 3 from autogluon.core.dataset import TabularDataset
4 from autogluon.core.features.feature_metadata import FeatureMetadata
5
/opt/conda/lib/python3.7/site-packages/autogluon/core/__init__.py in <module>
4 from .decorator import *
5 from .utils.files import *
----> 6 from .scheduler.resource.resource import *
7 from .scheduler.scheduler import *
8 from . import metrics
/opt/conda/lib/python3.7/site-packages/autogluon/core/scheduler/__init__.py in <module>
----> 1 from .import remote, resource
2 from .resource import get_cpu_count, get_gpu_count
3
4 # schedulers
5 from .scheduler import *
/opt/conda/lib/python3.7/site-packages/autogluon/core/scheduler/remote/__init__.py in <module>
1 # remotes
----> 2 from .remote import *
3 from .ssh_helper import *
4 from .remote_manager import *
/opt/conda/lib/python3.7/site-packages/autogluon/core/scheduler/remote/remote.py in <module>
9 from threading import Thread
10 import multiprocessing as mp
---> 11 from distributed import Client
12
13 from .ssh_helper import start_scheduler, start_worker
/opt/conda/lib/python3.7/site-packages/distributed/__init__.py in <module>
2 import dask
3 from dask.config import config
----> 4 from .actor import Actor, ActorFuture
5 from .core import connect, rpc, Status
6 from .deploy import LocalCluster, Adaptive, SpecCluster, SSHCluster
/opt/conda/lib/python3.7/site-packages/distributed/actor.py in <module>
4 from queue import Queue
5
----> 6 from .client import Future, default_client
7 from .protocol import to_serialize
8 from .utils import iscoroutinefunction, thread_state, sync
/opt/conda/lib/python3.7/site-packages/distributed/client.py in <module>
41 from tornado.ioloop import IOLoop, PeriodicCallback
42
---> 43 from .batched import BatchedSend
44 from .utils_comm import (
45 WrappedKey,
/opt/conda/lib/python3.7/site-packages/distributed/batched.py in <module>
6 from tornado.ioloop import IOLoop
7
----> 8 from .core import CommClosedError
9 from .utils import parse_timedelta
10
/opt/conda/lib/python3.7/site-packages/distributed/core.py in <module>
18 from tornado.ioloop import IOLoop, PeriodicCallback
19
---> 20 from .comm import (
21 connect,
22 listen,
/opt/conda/lib/python3.7/site-packages/distributed/comm/__init__.py in <module>
24
25
---> 26 _register_transports()
/opt/conda/lib/python3.7/site-packages/distributed/comm/__init__.py in _register_transports()
16 def _register_transports():
17 from . import inproc
---> 18 from . import tcp
19
20 try:
/opt/conda/lib/python3.7/site-packages/distributed/comm/tcp.py in <module>
15 import dask
16 from tornado import netutil
---> 17 from tornado.iostream import StreamClosedError
18 from tornado.tcpclient import TCPClient
19 from tornado.tcpserver import TCPServer
/opt/conda/lib/python3.7/site-packages/tornado/iostream.py in <module>
208
209
--> 210 class BaseIOStream(object):
211 """A utility class to write to and read from a non-blocking file or socket.
212
/opt/conda/lib/python3.7/site-packages/tornado/iostream.py in BaseIOStream()
284 self._closed = False
285
--> 286 def fileno(self) -> Union[int, ioloop._Selectable]:
287 """Returns the file descriptor for this stream."""
288 raise NotImplementedError()
AttributeError: module 'tornado.ioloop' has no attribute '_Selectable'
--pre
を外してみます。
!pip install --upgrade pip
!pip install --upgrade setuptools
!pip install --upgrade "mxnet<2.0.0"
!pip install autogluon
from autogluon.tabular import TabularDataset, TabularPredictor
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-3-974358aaf144> in <module>
----> 1 from autogluon.tabular import TabularDataset, TabularPredictor
ModuleNotFoundError: No module named 'autogluon.tabular'
autogluon.tabular
がないと言われていしまいました。それならとautogluon
→ autogluon.tabular
にしてみると…成功しました!最終的に、以下のような修正で解決しました。
!pip install --upgrade pip
!pip install --upgrade setuptools
!pip install --upgrade "mxnet<2.0.0"
!pip install autogluon.tabular
2021/02/26、Kaggleでは、TabularDataset
、TabularPredictor
を使うためにautogluon
ではなくautogluon.tabular
をインストールする必要があるということですね。色々気になっています
まとめ
「KaggleのNotebookでAutoGluonを使ってみる」というところまでを実現するために、作成したNotebookの紹介と、実現するまでに発生したエラー・解決方法を備忘録として記録しました。2021/02/26にした対応でしたが、今後もこのようなエラーが生じる恐れはあると思うので、あくまでも参考までにしていただけると幸いです。引き続きAutoGluonをはじめとするAutoMLをどんどん体験していきましょう!