경 탁

[데이콘] 펭귄 몸무게 예측 경진대회 본문

- 공부/2. AI

[데이콘] 펭귄 몸무게 예측 경진대회

김 경 탁 2021. 12. 29. 12:53

 휴가를 지낸지 어느덧 1달이 넘어갑니다.
배타는 동안 이론적인 공부만 했습니다.
실제로 코드를 짜거나 직접 데이터 분석을 한지는 오래되서 가물가물한데,
마침 데이콘에 좋은 경진대회가 열리고 있어서 포스팅 겸 코드를 짜볼까합니다.
 이 포스팅을 보신 분들 중 잘하시는 분들은 댓글로 조언을 적어주시면 감사하겠고,
반대로 저같은 초보분들은 함께 한다는 생각으로 참고하시면 좋을 것 같습니다.

 이번 포스팅에서 쓰인 툴은 '아나콘다(주피터 노트북)', 'PYCARET', 'PANDAS' 입니다.
정말 ~ 간단한 코드이며 정말 ~ 아무것도 안한 코드입니다 ㅋㅋ 
운동 전에도 워밍업이 중요하다고해서 처음부터 주구장창 코드 짜는 것보단 맛이라도 보는게 좋은 거 같습니다.
또 ~ M/L 은 점점 갈수록 진입장벽이 낮아지고 있고 자동화가 되가고 있습니다.
이러한 도구를 사용하지 않으면 제작자들에게 실례겠죠 ?? (대충 PYCARET을 사용한 이유를 설명중)

 

1. 데이터 불러오기 

import pandas as pd
train = pd.read_csv('train.csv')

 일단 판다스를 불러오고 train data를 불러옵니다.
저는 아직까지는 주피터 노트북 상에서 data를 보는 것보다 엑셀로 보는 게 편해서 
한쪽에서는 엑셀로 켜놓고 칼럼 특징 및 값들을 대략 훑어봅니다.
(결측치가 몇개가 보이는군요)

2. PYCARET 불러오기 

from pycaret.regression import *
exp1 = setup(train, target = 'Body Mass (g)',
            ignore_features=['id'])

  PYCARET 에서 회귀모델을 불러옵니다.
저희가 이번에 해결할 문제는 '펭귄의 몸무게' 맞추기이기 때문에 회귀 모델을 불러왔고
만일 분류 문제로 넘어가신다면 '.regression' 부분을 '.classfication' 으로만 바꿔주시면 됩니다.
아시다싶이 id 라는 칼럼은 사실상 무의미한 특징이어서 빼버렸고 경진대회의 종속변수인 몸무게를 지정합시다 =~=

3. 모델 형성 

compare_models()

 위 코드를 적게되면 툴이 자동으로 회귀모델을 비교하여 성능이 좋은 모델을 도출하게 됩니다.
제가 했을때는 lightgbm 이라는 모델이 성능이 가장 좋네요.
사실 진정한 데이터 사이언티스트가 되야된다면 lightgbm이 뭔지 알고 넘어가야겠지만 
일단은 시간 문제상 넘어가겠습니다.
[같은 데이터로 진행했다하더라도 저와 다른 모델이 최적의 모델로 채택될 수 있습니다. ==> 마치 사이킷런의 random seed 처럼 말이죠]

4. 모델 생성 및 튜닝 

lightgbm = create_model('lightgbm')
tuned_lg = tune_model(lightgbm)

 모델을 생성하고 튜닝까지 맞춰줍니다 ~ 

5. TEST 및 파일 추출 

test = pd.read_csv('test.csv')
lg_final = finalize_model(tuned_lg)
df = predict_model(lg_final,test)
result_1 = df[['id','Label']]
result_1.rename(columns = {'Label' : 'Body Mass (g)'}, inplace = True)
result_1
result_1.to_csv('1.csv', index = None)

이로써 워밍업은 끝났습니다.
데이콘에 제출하니 RMSE값이 336이 나오는군요.
첫 제출때는 대략 40등 내외입니다. 
이정도로 만족할 수 없습니다 ! 
다음번에는 결측치 제거 및 FEATURE ENGINEERING까지 하고 다시 모델을 돌리는 포스팅으로 돌아오겠습니다.
+_+ 

Comments