inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개정판] 파이썬 머신러닝 완벽 가이드

HyperOpt를 이용한 XGBoost 하이퍼 파라미터 튜닝

hyperopt 오류

244

JUNWON

작성한 질문수 4

0

안녕하세요 , 항상 고생많으십니다.

다름이 아니라 , hyperopt 마지막 실습 중에 다음의 코드에서 오류가 발생합니다. hyperopt version도 실습과 같은데, 왜 이런 오류가 발생하는지 몰라서 질문드립니다.

from hyperopt import fmin, tpe, Trials

trial_val = Trials()
best = fmin(fn=objective_func,
            space=xgb_search_space,
            algo=tpe.suggest,
            max_evals=50, # 최대 반복 횟수를 지정합니다.
            trials=trial_val, rstate=np.random.default_rng(seed=9))
print('best:', best)
오류문
---------------------------------------------------------------------------
AllTrialsFailed                           Traceback (most recent call last)
Cell In[21], line 4
      1 from hyperopt import fmin, tpe, Trials
      3 trial_val = Trials()
----> 4 best = fmin(fn=objective_func,
      5             space=xgb_search_space,
      6             algo=tpe.suggest,
      7             max_evals=50, # 최대 반복 횟수를 지정합니다.
      8             trials=trial_val, rstate=np.random.default_rng(seed=9))
      9 print('best:', best)

File ~\anaconda3\envs\sklearn_env\lib\site-packages\hyperopt\fmin.py:540, in fmin(fn, space, algo, max_evals, timeout, loss_threshold, trials, rstate, allow_trials_fmin, pass_expr_memo_ctrl, catch_eval_exceptions, verbose, return_argmin, points_to_evaluate, max_queue_len, show_progressbar, early_stop_fn, trials_save_file)
    537     fn = __objective_fmin_wrapper(fn)
    539 if allow_trials_fmin and hasattr(trials, "fmin"):
--> 540     return trials.fmin(
    541         fn,
    542         space,
    543         algo=algo,
    544         max_evals=max_evals,
    545         timeout=timeout,
    546         loss_threshold=loss_threshold,
    547         max_queue_len=max_queue_len,
    548         rstate=rstate,
    549         pass_expr_memo_ctrl=pass_expr_memo_ctrl,
    550         verbose=verbose,
    551         catch_eval_exceptions=catch_eval_exceptions,
    552         return_argmin=return_argmin,
    553         show_progressbar=show_progressbar,
    554         early_stop_fn=early_stop_fn,
    555         trials_save_file=trials_save_file,
    556     )
    558 if trials is None:
    559     if os.path.exists(trials_save_file):

File ~\anaconda3\envs\sklearn_env\lib\site-packages\hyperopt\base.py:671, in Trials.fmin(self, fn, space, algo, max_evals, timeout, loss_threshold, max_queue_len, rstate, verbose, pass_expr_memo_ctrl, catch_eval_exceptions, return_argmin, show_progressbar, early_stop_fn, trials_save_file)
    666 # -- Stop-gap implementation!
    667 #    fmin should have been a Trials method in the first place
    668 #    but for now it's still sitting in another file.
    669 from .fmin import fmin
--> 671 return fmin(
    672     fn,
    673     space,
    674     algo=algo,
    675     max_evals=max_evals,
    676     timeout=timeout,
    677     loss_threshold=loss_threshold,
    678     trials=self,
    679     rstate=rstate,
    680     verbose=verbose,
    681     max_queue_len=max_queue_len,
    682     allow_trials_fmin=False,  # -- prevent recursion
    683     pass_expr_memo_ctrl=pass_expr_memo_ctrl,
    684     catch_eval_exceptions=catch_eval_exceptions,
    685     return_argmin=return_argmin,
    686     show_progressbar=show_progressbar,
    687     early_stop_fn=early_stop_fn,
    688     trials_save_file=trials_save_file,
    689 )

File ~\anaconda3\envs\sklearn_env\lib\site-packages\hyperopt\fmin.py:593, in fmin(fn, space, algo, max_evals, timeout, loss_threshold, trials, rstate, allow_trials_fmin, pass_expr_memo_ctrl, catch_eval_exceptions, verbose, return_argmin, points_to_evaluate, max_queue_len, show_progressbar, early_stop_fn, trials_save_file)
    589     if len(trials.trials) == 0:
    590         raise Exception(
    591             "There are no evaluation tasks, cannot return argmin of task losses."
    592         )
--> 593     return trials.argmin
    594 if len(trials) > 0:
    595     # Only if there are some successful trail runs, return the best point in
    596     # the evaluation space
    597     return space_eval(space, trials.argmin)

File ~\anaconda3\envs\sklearn_env\lib\site-packages\hyperopt\base.py:620, in Trials.argmin(self)
    618 @property
    619 def argmin(self):
--> 620     best_trial = self.best_trial
    621     vals = best_trial["misc"]["vals"]
    622     # unpack the one-element lists to values
    623     # and skip over the 0-element lists

File ~\anaconda3\envs\sklearn_env\lib\site-packages\hyperopt\base.py:611, in Trials.best_trial(self)
    605 candidates = [
    606     t
    607     for t in self.trials
    608     if t["result"]["status"] == STATUS_OK and not np.isnan(t["result"]["loss"])
    609 ]
    610 if not candidates:
--> 611     raise AllTrialsFailed
    612 losses = [float(t["result"]["loss"]) for t in candidates]
    613 if len(losses) == 0:

AllTrialsFailed: 

python 머신러닝 통계

답변 3

0

JUNWON

새해부터 감사합니다. pandas 버전이 잘못되었던것 같네요 빠른답변 감사드립니다.

0

권 철민

안녕하십니까,

아래 사항 확인 부탁드립니다.

  1. 실습 코드를 변경없이 사용하신건가요? 만약 변경하셨다면 변경된 부분을 여기에 올려봐 주십시요.

  2. 사용하시는 scikit learn 버전이 1.0.2 인지 확인 부탁드립니다.

 

감사합니다.

0

JUNWON

image.png

안녕하세요,

 

위에서 보시는 것처럼 변경 없이 사용하였고, 실습코드도 그대로 사용하였습니다.

이외에 체크해볼 문제가 있을까요?

 

감사합니다.

0

권 철민

음, 저는 문제 없이 수행됩니다만,

아래로 numpy와 pandas 버전도 확인 부탁드립니다.

import numpy as np

import pandas as pd

print(np.__version__)

print(pd.__version__)

 

저는 numpy 1.22.4, pandas 1.3.4 입니다.

 

0

인프런 AI 인턴

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

Hyperopt를 사용하면서 “AllTrialsFailed” 오류를 겪고 계시군요. 이 오류는 모든 시도가 실패했을 때 발생합니다. 보통 다음과 같은 이유로 인해 발생하게 됩니다:

  1. Invalid Objective Function: objective_func 함수가 올바른 값을 반환하지 않거나, 에러가 발생하고 있습니다. 함수가 반드시 STATUS_OKloss 값을 포함한 dict를 반환하는지 확인해 주세요. 예시:
    ”`python
    from hyperopt import STATUS_OK

def objective_func(params):
# 예를 들어, XGBoost의 경우 적절한 loss를 계산하고 반환합니다
loss = 계산된_손실
return {‘loss’: loss, ‘status’: STATUS_OK}
“`

  1. Parameter Space Issues: xgb_search_space에서 정의한 파라미터의 값이 유효하지 않거나 범위를 벗어날 때도 이런 문제가 발생할 수 있습니다. 파라미터 공간이 적절하게 정의되었는지 점검해 주세요.

  2. 환경 문제: 현재 환경에서 필요한 라이브러리의 버전이 맞지 않는 경우에도 문제가 생길 수 있습니다. 사용하신 환경이 hyperopt, numpy 및 관련 라이브러리의 호환되는 버전을 제공하는지 확인해 보시기 바랍니다.

  3. 종속성 문제: 의존하고 있는 다른 라이브러리나 코드에 의한 오류가 있을 수 있습니다. 이러한 경우, objective_func 내에서 다른 코드나 라이브러리 함수에 오류가 있을 수 있어 각 부분의 테스트가 필요합니다.

아래 게시물을 통해 관련된 문제 해결 방법과 비슷한 사례를 확인하실 수 있습니다:
- 최적화 함수 에러: 이 링크에서 비슷한 형태의 오류와 그에 대한 해결 방법을 확인할 수 있습니다.

위의 사항들을 점검한 뒤에도 문제가 지속된다면, 추가적인 코드와 오류 메시지를 공유해 주시면 더욱 상세히 도움 드릴 수 있을 것 같습니다.

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

안녕하세요 열심히 수강중인 학생입니다

0

63

2

정수 인덱싱

0

68

2

넘파이 오류

0

85

2

11강 numpy의 axis 축 질문 드립니다.

0

85

2

Kaggle 에서 Santander customer satisfaction data 를 다운로드 되지가 않습니다.

0

79

2

Feature importances 를 보여주는 barplot 이 그래프로 안보여져요.

0

70

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

75

2

타이타닉 csv 파일이 주피터 화면에 보이지 않습니다.

0

64

2

5강 강의 오류가 있어요.

0

84

1

실무에서 LTV 관련 모델 선택 질문입니다!

0

72

2

14강 강의 듣는중에 궁금한게 있어서 질문합니다~

0

69

3

파이썬 다운그레이 후 사이킷런 재설치

0

117

2

좋은 강의 감사합니다.

0

72

2

scoring 함수 음수값

0

67

2

6번 강의에 사이킷런, 파이썬, 아나콘다 각각 버전 일치 안 시키고 진행해도 강의 따라가 지나요?

0

100

2

분류 평가 정확도 예측

0

76

2

안녕하세요. 강의 들으면서 업무에 적용하고 싶은 수강생입니다.

0

99

1

카카오톡 채널 있나요

0

107

1

혹시 강의에서 사용하시는 ppt 받을 수 있는건가요

0

189

2

pca 스케일링 관련하여 질문드립니다.

0

100

2

주피터 대신 구글 코랩

0

172

2

강의에서 사용하는 pdf or ppt자료는 따로 없는 건가요?

0

148

2

실루엣 스코어..

0

86

2

float64 null 값 처리 방법

0

103

2