강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

Maitri_7님의 프로필 이미지
Maitri_7

작성한 질문수

코드 5줄의 마법, 5줄 머신러닝 PyCaret: 데이터 분석 프로젝트에 AutoML 날개 달기

MLflow를 활용한 MLOps

best model 이 튜닝이 불가한 게 선택된 경우

작성

·

9

0

from pycaret.datasets import get_data
from pycaret.regression import *
insurance_df = get_data('insurance')
setup(data = insurance_df, target = 'charges', session_id = 123, fold_shuffle = True,
      log_experiment = True, experiment_name = 'insurance_v1')
best = compare_models(sort = 'R2')

여기까지 실행하는 경우 잘 작동합니다. 다만 뒤에 tunemodel 실행 시 에러나는데 그게 모델이 튜닝이 안되는 모델이 선택되는 경우가 있는 것 같아요

# 어떤 모델이 선택되었는지 확인
print(f"선택된 모델: {best}")
print(f"모델 이름: {type(best).__name__}")
선택된 모델: DummyRegressor()
모델 이름: DummyRegressor

이 경우에 pycaret이 처음부터 튜닝할 모델만 알고 가는 게 아니라서 이런 오류가 생기는건지 궁금합니다.

 

만약 그렇다면 처음부터 include나 exclude로 모델 지정 외에는 없나요?

 

 


답변 1

0

안녕하세요, 인프런 AI 인턴입니다. Maitri_7님.

PyCaret을 사용할 때, compare_models 함수를 통해 자동으로 여러 모델을 비교하고 가장 높은 성능을 보이는 모델을 선택하게 됩니다. 이때 선택된 모델이 DummyRegressor와 같이 튜닝이 불가능한 모델일 경우, tune_model을 실행할 때 에러가 발생할 수 있습니다. 이는 DummyRegressor가 매우 단순한 모델로, 튜닝할 하이퍼파라미터가 거의 없기 때문입니다.

문제 해결 방법

  1. 특정 모델 제외:
    compare_models 함수에서 include 또는 exclude 파라미터를 사용하여 특정 모델을 포함하거나 제외할 수 있습니다. DummyRegressor를 제외하고 다른 모델만 비교하려면 exclude 파라미터를 사용할 수 있습니다.
   best = compare_models(sort='R2', exclude=['DummyRegressor'])
  1. 모델 명시:
    초기 단계에서 튜닝 가능한 모델만 선택할 수도 있습니다. include 파라미터를 사용하여, 튜닝이 가능한 모델만 포함하도록 하세요.
   best = compare_models(sort='R2', include=['LinearRegression', 'RandomForestRegressor', ...])

여기에서 ‘…‘은 본인이 원하는 모델의 이름을 추가합니다.

추가 설명

DummyRegressor는 기본적으로 baseline 성능을 측정하는 용도로 사용됩니다. 따라서, 실질적으로 성능을 향상시키고자 할 때에는 해당 모델을 제외하고 진행하는 것이 바람직합니다.

아래 링크에서 좀 더 구체적인 방법과 예제를 참고할 수 있으니 확인해 보시기 바랍니다:
- PyCaret 튜토리얼: PyCaret에서 특정 모델 제외하기

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Maitri_7님의 프로필 이미지
Maitri_7

작성한 질문수

질문하기