inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]

하이퍼 파라미터 튜닝 기법 적용하기1 (XGBoost 실습) (업데이트)

Bayesian Optimization XGBoost 적용 실행시 오류

763

hyukjae.jang

작성한 질문수 4

0

'Bayesian Optimization XGBoost 적용' 코드 실행시 아래처럼 iteration이 진행되다가 10번 이후에 에러가 납니다.
|   iter    |  target   | colsam... |   gamma   | learni... | max_depth | min_ch... | n_esti... | subsample |
-------------------------------------------------------------------------------------------------------------
|  1        |  0.817    |  0.7085   |  3.602    |  0.01006  |  5.116    |  1.468    |  183.1    |  0.5931   |
|  2        |  0.8283   |  0.6728   |  1.984    |  0.274    |  5.934    |  6.852    |  284.0    |  0.9391   |
|  3        |  0.8272   |  0.5137   |  3.352    |  0.2145   |  6.911    |  1.404    |  278.3    |  0.9004   |
|  4        |  0.8081   |  0.9841   |  1.567    |  0.3492   |  9.135    |  8.946    |  176.5    |  0.5195   |
|  5        |  0.8114   |  0.5849   |  4.391    |  0.05819  |  5.948    |  9.579    |  579.8    |  0.8459   |
|  6        |  0.8249   |  0.6578   |  3.433    |  0.419    |  3.128    |  7.501    |  990.0    |  0.8741   |
|  7        |  0.8081   |  0.6402   |  3.946    |  0.06058  |  6.135    |  9.086    |  364.3    |  0.6439   |
|  8        |  0.816    |  0.565    |  0.09683  |  0.3426   |  4.481    |  2.655    |  542.4    |  0.5267   |
|  9        |  0.8306   |  0.7871   |  0.7336   |  0.2988   |  7.898    |  1.023    |  472.7    |  0.8472   |
|  10       |  0.8171   |  0.7071   |  0.2498   |  0.2726   |  7.647    |  5.149    |  950.1    |  0.7933   |
 
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
File /usr/local/lib/python3.9/site-packages/bayes_opt/bayesian_optimization.py:179, in BayesianOptimization.maximize(self, init_points, n_iter, acq, kappa, kappa_decay, kappa_decay_delay, xi, **gp_params)
    178 try:
--> 179     x_probe = next(self._queue)
    180 except StopIteration:

File /usr/local/lib/python3.9/site-packages/bayes_opt/bayesian_optimization.py:25, in Queue.__next__(self)
     24 if self.empty:
---> 25     raise StopIteration("Queue is empty, no more objects to retrieve.")
     26 obj = self._queue[0]

StopIteration: Queue is empty, no more objects to retrieve.

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
Input In [22], in <module>
     36 optimizer = BayesianOptimization( f=xgboost_hyper_param, pbounds=pbounds, random_state=1)
     37 # init_points: 초기 랜덤 포인트 갯수
     38 # acq='ei': Expected Improvement 
     39 # xi=0.01: exploration(불확실성이 가장 높은 점 근처에 최적값이 존재할 것이라는 가정으로 계산된 값) 강도 (보통 0.01) 
---> 40 optimizer.maximize(init_points=10, n_iter=100, acq='ei', xi=0.01)

File /usr/local/lib/python3.9/site-packages/bayes_opt/bayesian_optimization.py:182, in BayesianOptimization.maximize(self, init_points, n_iter, acq, kappa, kappa_decay, kappa_decay_delay, xi, **gp_params)
    180 except StopIteration:
    181     util.update_params()
--> 182     x_probe = self.suggest(util)
    183     iteration += 1
    185 self.probe(x_probe, lazy=False)

File /usr/local/lib/python3.9/site-packages/bayes_opt/bayesian_optimization.py:131, in BayesianOptimization.suggest(self, utility_function)
    128     self._gp.fit(self._space.params, self._space.target)
    130 # Finding argmax of the acquisition function.
--> 131 suggestion = acq_max(
    132     ac=utility_function.utility,
    133     gp=self._gp,
    134     y_max=self._space.target.max(),
    135     bounds=self._space.bounds,
    136     random_state=self._random_state
    137 )
    139 return self._space.array_to_params(suggestion)

File /usr/local/lib/python3.9/site-packages/bayes_opt/util.py:65, in acq_max(ac, gp, y_max, bounds, random_state, n_warmup, n_iter)
     62     continue
     64 # Store it if better than previous minimum(maximum).
---> 65 if max_acq is None or -res.fun[0] >= max_acq:
     66     x_max = res.x
     67     max_acq = -res.fun[0]

TypeError: 'float' object is not subscriptable

python pandas 머신러닝 배워볼래요? kaggle

답변 2

0

jin-ah.lee

https://stackoverflow.com/questions/71460894/bayesianoptimization-fails-due-to-float-error

동일한 에러를 겪고 있고, 근본적인 이유는 scipy 가 1.8.0으로 버전업이 되면서 -res.fun[0] 대신 -np.squeeze(res.fun) 로 변경되면서 발생한 문제인 것 같습니다.

제시된 해결방법을 적용할 수 없었지만 참고차 남깁니다.

1. scipy 1.7.0 사용

2. https://github.com/fmfn/BayesianOptimization/issues/300 을 참고하여 아래와 같이 bayesian optimization 재설치

pip install git+https://github.com/fmfn/BayesianOptimization

0

잔재미코딩 DaveLee

안녕하세요. 해당 코드가 아마 다음 코드로 보이는데 맞는 것이죠?

이것도 기존 문의처럼, 해당 코드 시간이 상당히 걸려서요.  실제로 에레 메세지가 사용하시는 PC에서는 성능상의 이슈로 코드 실행이 버거워서 그런 것 같아요. ㅠㅠ n_iter 값을 10 정도까지가 현 PC 에서는 가능한 범위 같아보여서, 10으로 바꿔보시면 어떠실까요? 더 많이 실행하면할수록 아주 조금씩은 개선된 값이 나올 가능성이 높아지겠지만, 이 부분이 전체 최종 예측 성능에 크게 영향을 주는 부분은 아니라서, 사용법을 익혀보신다고 생각해보셔도 좋지 않을까 합니다. 

감사합니다.

 

 

자료 공유 질문

0

70

1

Ascii 에러 관련하여 질문드립니다

0

98

1

고차원 데이터 질문

0

85

1

세션4 범주형 데이터 분석 패턴 강의 질문

0

218

2

pandas 2.2.2, xgboost 2.1.3 에러 해결 방법

0

235

1

sklearn v1.5.1

0

176

1

머신러닝 적용을 위한 Feature Engineering 작업1

0

185

2

missingno 대체

0

175

1

scikit-learn 1.5.1 matplotlib 3.9.2

0

136

1

환불문의

0

273

1

자료공유를 받으려고 하는데 에러가 납니다.

0

171

1

iplot에서 항상 에러나는 분 안계신가용?

0

234

1

사망 여부 영향 가능성

0

149

1

섹션4_인코딩 이해하고 적용해보기(원핫인코딩) 질문

0

196

1

df.corr(numeric_only=True).iplot() 에러 해결 어떻게 해야되나요?

0

288

1

주피터 노트북 201_REGRESSION_BIKE_SHARING_MODELS 중 질문

0

252

1

3강 강의 자료 코드 관련 질문입니다

1

345

1

맥 사용자 mkdir .kaggle 했는데 파일이 안만들어집니다.

0

428

1

Bayesian Optimization에서 optimizer.maximize()함수를 더이상 지원 안한다고 합니다.

0

887

2

Bayesian Optimization LightGBM 적용

0

469

2

하이퍼 파라미터 튜닝 기법 적용하기 실행값이 미묘하게 달라요.

1

347

1

중복된 코드 수정 요청 - 자전거 공유 문제 이해와 EDA3

0

219

1

강의 중 에러 질문

0

757

1

cross_val_score 에러

0

471

1