Kaggle의 노트북에서 AutoGluon을 사용해보기

※이것은 2021/02/26의 기사입니다. 지적 등이 있으면 걱정할 필요없이 코멘트 부탁드립니다

소개



아래의 기사를 읽고 이것을 참고로 Kaggle의 Notebook에서 AutoGluon(특히 AutoGluon-Tabular)을 사용해 보려고 했는데, 순조롭게는 할 수 없었습니다.

원인으로는 올해 AutoGluon 자체에 약간의 변경이 있었기 때문일 수 있습니다. 또 추천되는 이용 방법도 바뀐 것 같습니다. 거기서, 그 근처를 고려해, 「Kaggle의 Notebook에서 AutoGluon을 사용해 본다」라고 하는 곳까지를 실현했습니다. 작성한 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 가 없다고 말해졌습니다. 그렇다면 autogluonautogluon.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 여러가지 궁금합니다

    요약



    「Kaggle의 Notebook에서 AutoGluon을 사용해 본다」라고 하는 곳까지를 실현하기 위해서, 작성한 Notebook의 소개와, 실현하기까지 발생한 에러·해결 방법을 비망록으로서 기록했습니다. 2021/02/26에 한 대응이었습니다만, 앞으로도 이러한 에러가 발생할 우려는 있다고 생각하므로, 어디까지나 참고까지 해 주실 수 있으면 다행입니다. 계속해서 AutoGluon을 비롯한 AutoML을 점점 체험해 갑시다!

    좋은 웹페이지 즐겨찾기