[kaggle] 범주형 데이터 분석 - 머신러닝 2편 (로지스틱 회귀 하이퍼파라미터 튜닝)
·
Data Science/Kaggle
저번 포스팅에서는 명목형 변수 중에서 nom_9 변수를 제거하여 0.804의 성능으로 향상시켰다. 이번 포스팅에서는, 사용했던 모델인 '로지스틱 회귀' 모델을 하이퍼 파라미터 튜닝하여 좀 더 성능을 향상시켜 보자! 데이터를 불러오는 과정은 앞의 포스팅과 똑같으므로 생략하고, 범주형 변수 인코딩 하는 부분과 모델 하이퍼 파라미터 튜닝하는 부분은 함수로 만들어서 좀 더 코드를 간결하게 만들어보았다. 참고로 하이퍼 파라미터 튜닝은 시간이 꽤 오래 걸리니 코드 실행 시 주의하자! (적으면 10분, 많으면 40분까지도 걸린다) 전체 코드는 이 깃허브에서 다운받을 수 있다 :) ✔Table of Contents 1. nom_9 변수 제외 & 하이퍼 파라미터 튜닝 함수화 먼저 데이터를 불러오고, 데이터 인코딩 하는 ..
[kaggle] 범주형 데이터 분석 - 머신러닝 1편 (변수 선택)
·
Data Science/Kaggle
이전 포스팅에서는 범주형 변수를 전처리하기 위한 인코딩을 하고, 기본적인 베이스라인 모델을 만들어 제출까지 해보았다. 이번 포스팅부터는 성능을 개선하기 위한 여러 방법들을 시도해보자! 내가 시도해본 방법은 다음과 같다. 1) 명목형 변수인 nom_*의 변수 개수 조정 (nom_5~ nom_9번 변수는 의미있는 변수인지 모르니까) 2) 로지스틱 회귀의 하이퍼 파라미터 튜닝 이번 포스팅에선 1번을 해본다. 참고로 전체 코드는 나의 깃허브에서 다운받을 수 있다 :) ✔Table of Contents 1. 데이터 불러오기 import pandas as pd import numpy as np import warnings warnings.filterwarnings("ignore") train = pd.read_cs..
[kaggle] 범주형 데이터 분석 - 변수 인코딩 & Baseline model
·
Data Science/Kaggle
저번 EDA 포스팅을 통해 범주형 변수들이 어떤 카테고리 값을 갖고 있는지와, target과의 관계를 파악하였다. 그리고 주어진 모든 범주형 변수가 target과 유의미한 관계가 있다는 것을 알 수 있었다. (하지만 명목형 변수 nom_5~nom_9는 카테고리가 워낙 많아 검증이 필요하다.) 이번에는 베이스라인 모델을 만들어본다. 주어진 범주형 변수들을 활용해 target을 예측하는 모델을 만들어 볼 것이며, 베이스라인 모델이므로 가장 간단한 형태로 만들 것이다. 이번 포스팅에서는 범주형 변수를 전처리하는 변수 인코딩(Encoding) 방법과, 아주 간단한 로지스틱 회귀 모델을 만들어 보고 score가 얼마가 나오는지 알아보자. ✔Table of Contents 1. 범주형 변수 인코딩(Encoding)..
[kaggle] Bike Sharing Demand: ML 성능 개선 3편 (머신러닝 결측치 처리)
·
Data Science/Kaggle
이번 포스팅은 캐글 Bike Sharing Demand(자전거 수요예측) 프로젝트의 마지막 포스팅이다. 저번 포스팅에서는 타겟을 count로 바꾸고, season과 month 중 더 유의미한 변수를 선택하는 등의 성능 개선을 통해 0.379까지 스코어를 올렸다! 이번 포스팅에서는 좀 더 스코어를 올리기 위해, windspeed 변수를 건드려볼 것이다. 이번에는 이 변수를 아예 제거하거나 0을 처리해주었을 때 스코어가 어떻게 변하는지를 알아보자! NOTE: 앞의 포스팅과 중복되는 코드가 많아 필요한 코드만 포스팅하였습니다. 전체 코드는 이 깃허브의 v.4, v.5 참고하세요! ✔Table of Contents ver.4 windspeed 변수 drop 이전 포스팅 결과에 따라, target은 count를,..
[kaggle] Bike Sharing Demand: ML 성능 개선 2편 (변수 선택)
·
Data Science/Kaggle
저번 포스팅에서 LGBM 모델을 하이퍼 파라미터 튜닝하여 얻은 스코어는 약 0.407이었다. 이번에는 이 score에서 성능을 더 끌어올리기 위해 내가 시도한 여러 가지 방법들에 대해 포스팅하였다. 과연 이 스코어는 얼마까지 좋아질 수 있을까? 🤔 참고로, 이번 포스팅은 저번 포스팅과 중복되는 코드가 많을 예정이기에, 달라진 부분들만 중점적으로 포스팅하려고 한다. 전체 코드가 궁금하신 분들께서는 깃허브에 ML v.2 부터 v.5까지 올라와 있으므로 참고하세요 :) ✔Table of Contents ver.2 count 변수를 타겟으로 앞의 LGBM 모델링은, casual에 대한 예측과 registered에 대한 예측을 따로 한 다음, 두 예측치를 합하여 count 예측치를 구했다. 이렇게 한 이유는 ED..
[kaggle] Bike Sharing Demand: ML 성능 개선 1편 (Ridge, Random Forest, LGBM)
·
Data Science/Kaggle
직전 포스팅에서는 베이스라인 모델로 선형 회귀(Linear Regression)를 사용해 k-fold를 진행하였고, 검증셋에 대한 RMSLE는 0.9~1 정도로 그렇게 좋은 성능은 얻어내지 못했다. 하지만! 베이스라인 모델이니까 어쩌면 당연하다. 이번에는 다양한 모델들(릿지 회귀, Random Forest, LGBM)을 사용해서 성능이 이전과 얼마나 달라졌는지를 확인하고, 최종 제출까지 해보았다. 참고로 전체 코드는 이 깃허브에서 확인하실 수 있습니다. (ML v.1 파일입니다!) ✔Table of Contents 3. Modeling (성능 개선 편) 캐글에서는 지표로 RMSLE 값을 사용한다고 하였으나, 사이킷런의 metric을 사용하는 관계로 편의를 위해 포스팅에선 MSLE값을 구하는 것으로 하였다..
[kaggle] Bike Sharing Demand: Baseline Model 2편 (pipeline, k-fold, scaling)
·
Data Science/Kaggle
저번 포스팅에선 모델링을 위한 데이터 전처리를 진행하였다. 이번 포스팅에선 직접 Baseline 모델을 만들어보자. ✔Table of Contents 3. Modeling 모델링을 하기 전에는 스코어를 집계하는 metric, 즉 지표로는 무엇을 사용하는지를 반드시 알아야 한다. 캐글에서 확인하면, 이 대회에서는 RMSLE를 사용한다고 되어 있다. 사이킷런(scikit-learn)을 활용하면 지표를 구하는 metric이 이미 구현되어 있다. MSE를 구하는 metric인데, RMSE 또한 MSE에 루트를 씌운 값이므로 MSE를 구한 후 np.sqrt로 루트만 씌워주면 된다. sklearn.metrics.mean_squared_error Examples using sklearn.metrics.mean_squ..
[kaggle] Bike Sharing Demand: Baseline Model 1편 (데이터 전처리)
·
Data Science/Kaggle
저번 포스팅에서 EDA를 통해, Bike Sharing Demand 프로젝트에 사용된 데이터가 어떻게 되어 있고, 변수 간에 어떤 관계가 있었으며, 어떤 변수를 머신러닝에 사용할 것인지에 대해 검토하였다. 저번 포스팅에서 발견한 정보들을 간략히 정리해보면 다음과 같다. 수치형 변수 온도(temp, atemp), 습도(humidity), 풍향(windspeed): 각각 대여량(target)과 정비례, 반비례, 정비례 관계 특히 hour별로 봤을 때, casual일 때 대여량과 상관성이 높았다. 카테고리 변수 시간 변수로는 연도(year), 월(month), 시간(hour), 요일(dayofweek)이 유의미했다. 분기(season), 날씨(weather), 평일(workingday), 공휴일(holiday..
[kaggle] Bike Sharing Demand: EDA 2편
·
Data Science/Kaggle
저번 포스팅에선 [수치형 변수 및 범주형 변수와 대여량 간 관계]를 시각화해보았고, 시간과 날씨 데이터에 대해 알아보았다. 이번 포스팅에선 분기(season)와 workingday 및 holiday 변수들이 대여량과 어떤 관계가 있는지를 시각화해보았다. ✔Table of Contents 2) 범주형 변수와 대여량 간 관계(con't) 나머지 변수들인 season, workingday, holiday와 대여량 간 관계를 시각화한다. 2-3) season과 평균 대여량 간 관계 저번 포스팅에서도 말했지만, 캐글 데이터상으로는 season이 '계절' 로 나와 있으나, 사실상 '분기'로 봐야 한다고 했었다. barplot을 그려보면.. # 1,4사분기 포커스 fig, axs = plt.subplots(1,3, ..
[kaggle] Bike Sharing Demand: EDA 1편
·
Data Science/Kaggle
첫 번째로 시작한 kaggle 프로젝트는 바로 'Bike Sharing Demand Project' 이다. 아주 유명한 데이터셋이라 많이 들어본 분들도 있으리라 생각한다. (무려 7년 전 데이터..!) 2022년 5월 25일부터 2022년 6월 9일까지 2주 동안 분석해보았다. 프로젝트 목표 [최종 목표] test 데이터의 대여량(count) 값을 예측하라! 1. train data를 바탕으로 사용자들의 사용 패턴을 파악한다. → (1) EDA 편 2. 앞서 알아본 패턴을 바탕으로, 적절한 모델을 설정하고 모델링을 통해 test data에 대해 예측한다. → (2) 머신러닝 편 이 포스팅은 데이터를 핸들링하는 EDA 편이며, 코드보단 설명 위주(왜 이렇게 분석했는지, 무엇을 얻었는지)의 포스팅이 될 예정..
Everly.
'캐글' 태그의 글 목록