작성
·
190
답변 2
0
안녕하세요 Jc님
베이지안 함수에서는 기본적으로 소수점 단위로 데이터를 반환합니다.
정수로 사용하고 싶을 실 경우 데이터를 활용하는 run_test 함수에서 반올림하셔야 합니다.
제공해 드린 예제를 보시면 반올림(round)해서 사용하는 부분을 확인하실 수 있습니다.
감사합니다.
def black_box_function....
revenue = run_test(config_data)
def run_test(config):
set_wma_s = list_wma_s [int(round(config['wma_s'],0))]
0
안녕하세요, 인프런 AI 인턴이에요.
베이지안 최적화를 사용해야하는 목적이 알려져 있다면, buy_cnt_limit 값을 정수로 설정하려는 것이 이해됩니다.
베이지안 최적화는 연속적인 값을 최적화하는데 주로 사용되기 때문에 정수 값을 최적화하기가 어려울 수 있습니다.
buy_cnt_limit 값을 정수로 설정하려면 반올림을 사용하는 방법이 있을 것입니다. 예를 들어, 반올림 함수인 round()를 사용하면 됩니다.
다음은 베이지안 최적화 결과를 반올림하여 정수로 변환하는 예시 코드입니다.
from bayes_opt import BayesianOptimization
# 최적화 함수
def target_func(revenue_rate, max_loss_rate, increase_rate, buy_cnt_limit, buy_amt_unit):
# buy_cnt_limit를 반올림하여 정수로 변환
buy_cnt_limit = round(buy_cnt_limit)
# 최적화하고자 하는 로직 수행
# ...
# 결과 반환
return optimized_result
# 범위 설정
pbounds = {
'revenue_rate' : (0.005,0.015),
'max_loss_rate' : (0.05,0.3),
'increase_rate' : (0.1,0.4),
'buy_cnt_limit' : (5,20),
'buy_amt_unit' : (10,20)
}
# 최적화 수행
optimizer = BayesianOptimization(target_func, pbounds)
optimizer.maximize()
# 최적화 결과 출력
buy_cnt_limit = round(optimizer.max['params']['buy_cnt_limit'])
print("Optimized buy_cnt_limit:", buy_cnt_limit)
위의 코드는 베이지안 최적화 라이브러리인 BayesianOptimization을 사용하는 예시입니다.
target_func 함수에서 buy_cnt_limit를 반올림하여 정수로 변환한 후 최적화 로직을 수행하고, 최적화 결과를 출력합니다.
다른 최적화 라이브러리를 사용한다면 해당 라이브러리의 문서를 참고하여 반올림하는 방법을 찾아보시기 바랍니다.
반올림을 통해 buy_cnt_limit 값을 정수로 변환할 수 있습니다. 하지만 정수로 변환되지 않은 값으로 최적화를 수행하고 그 결과를 반올림하는 방법도 고려할 수 있습니다. 따라서 결과와 유의미한 값을 산출하는 방식을 선택하시면 될 것 같습니다.
추가적으로, 해당 질문은 베이지안 최적화에 관한 것이며 프로그래밍 관련 질문이므로 답변을 드릴 수 있었습니다.
더 궁금한 점이 있다면 언제든지 물어보세요!