작성
·
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
가 매우 단순한 모델로, 튜닝할 하이퍼파라미터가 거의 없기 때문입니다.
compare_models
함수에서 include
또는 exclude
파라미터를 사용하여 특정 모델을 포함하거나 제외할 수 있습니다. DummyRegressor
를 제외하고 다른 모델만 비교하려면 exclude
파라미터를 사용할 수 있습니다. best = compare_models(sort='R2', exclude=['DummyRegressor'])
include
파라미터를 사용하여, 튜닝이 가능한 모델만 포함하도록 하세요. best = compare_models(sort='R2', include=['LinearRegression', 'RandomForestRegressor', ...])
여기에서 ‘…‘은 본인이 원하는 모델의 이름을 추가합니다.
DummyRegressor
는 기본적으로 baseline 성능을 측정하는 용도로 사용됩니다. 따라서, 실질적으로 성능을 향상시키고자 할 때에는 해당 모델을 제외하고 진행하는 것이 바람직합니다.
아래 링크에서 좀 더 구체적인 방법과 예제를 참고할 수 있으니 확인해 보시기 바랍니다:
- PyCaret 튜토리얼: PyCaret에서 특정 모델 제외하기
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.