2021 농산물 가격예측 AI 경진대회

알고리즘 | 정형 | 회귀 | 농작물 | NMAE

  • moneyIcon Prize : 2,600만원
  • 1,912명 마감

 

[baseline2] LightGBM을 활용한 개별 모델링(Public: 0.22959)

2021.09.20 13:46 5,458 Views language

안녕하세요, DACON.HoneyBee입니다🐝

품목, 품종별로 특징이 다를 것이기에 
그 특징을 살려 학습할 수 있는 개별 모델을 만드는 방법을 시도해보았습니다.
(참고로, 첫번째 baseline은 단일 모델로 전체 21개의 품목 및 품종 가격을 예측합니다.)

Public Score: 0.22959

감사합니다🍯

Code
로그인이 필요합니다
0 / 1000
클라우드
2021.09.22 14:16

안녕하세요? 
전처리 이후 데이터 스키마가 train, test 모두 동일한 것 같은데 에러가 발생하네요.
'''
[LightGBM] [Fatal] The number of features in data (60) is not the same as it was in training data (57).
You can set ``predict_disable_shape_check=true`` to discard this error, but please be aware what you are doing.
'''
그 전에 nmae 함수에서 에러가 발생하는 부분이 있어서
'''
# answer = week_answer.to_numpy()
answer = week_answer
'''
lightgbm.train params에서 { ..., verbose: -1 } 추가
이렇게 변경한 부분 말고는 동일하게 실행해보았습니다.

보완사항 있으시면 업데이트 부탁드려요.

감사합니다.

클라우드
2021.09.22 14:24

'''
# temp_test = alldata.iloc[-1].astype(float)
temp_test = alldata.iloc[-1].astype(float)[:-3]
'''
마지막 1,2,4주 컬럼을 예측필드로 고려해서 이렇게 변경했더니, 일단 에러없이 작동하는데 맞는지요?

DACON.HoneyBee
2021.09.23 10:58

안녕하세요, 클라우드님!
말씀해주신 내용으로 유추해보면
'''
# answer = week_answer.to_numpy()
answer = week_answer
'''
이 부분 때문에 에러가 발생하지 않았나 싶습니다.
nmae 함수에서 발생했다는 에러가 뭔지 알려주시면 문제 해결 도와드리겠습니다.
감사합니다.

클라우드
2021.09.23 11:14

week_answer 가 numpy.ndarray 타입이라서 발생하는 문제 같습니다.
'''
AttributeError: 'numpy.ndarray' object has no attribute 'to_numpy'
'''

DACON.HoneyBee
2021.09.23 12:09

baseline2 코드와 동일하게 실행했을 때,
week_answer는 pd.Series 타입입니다.
혹시 다른 수정한 부분이 있나요??

클라우드
2021.09.23 13:01

lightgbm 버전 문제일 수 있겠네요.
제 실행 환경은 ubuntu 18.04에서 lightgbm 버전이 3.2.1입니다.
최신 문서에는 lightgbm.Dataset get_label 함수의 리턴 타입이 numpy array or None 으로 되어 있습니다.
'''
def at_nmae(pred, dataset):
    y_true = dataset.get_label()
    ...
'''
https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.Dataset.html#lightgbm.Dataset.get_label

submission 제출해보니 스코어가 유사하게 나온걸 보아, 제 환경에서는 앞에 언급드린대로 하면 될 것 같습니다.

감사합니다.

marco
2021.10.14 23:52

삭제된 댓글입니다