[캐글 스터디] Bike Sharing Demand
캐글 문제풀이. 도시의 자전거 대여 시스템과 관련된 여러 정보를 통해 자전거 대여량 수요
를 예측하도록 한다.
1. 데이터셋
datetime - hourly date + timestamp
season - 1 = spring, 2 = summer, 3 = fall, 4 = winter
holiday - whether the day is considered a holiday
workingday - whether the day is neither a weekend nor holiday
weather
1: Clear, Few clouds, Partly cloudy, Partly cloudy
2: Mist + Cloudy, Mist + Broken clouds, Mist + Few clouds, Mist
3: Light Snow, Light Rain + Thunderstorm + Scattered clouds, Light Rain + Scattered clouds
4: Heavy Rain + Ice Pallets + Thunderstorm + Mist, Snow + Fog
temp - temperature in Celsius
atemp - “feels like” temperature in Celsius
humidity - relative humidity
windspeed - wind speed
casual - number of non-registered user rentals initiated
registered - number of registered user rentals initiated
count - number of total rentals
- 학습 타겟 y는 count column이다
- train dataset에는 casual과 registered가 있는데 test dataset에는 없다. 그냥 drop하면 되는것인지 약간 궁금
2. Baseline 잡기
1 | # csv 파일을 읽어온다 |
1 | <class 'pandas.core.frame.DataFrame'> |
pandas.Series.dt 의 함수를 사용해 datetime 정보를 정제해준다.
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.date.html1
2
3
4
5
6
7
8
9
10
11
12# 날짜 데이터 전처리 진행
train["year"] = train["datetime"].dt.year
test["year"] = test["datetime"].dt.year
train["month"] = train["datetime"].dt.month
test["month"] = test["datetime"].dt.month
train["day"] = train["datetime"].dt.weekday
test["day"] = test["datetime"].dt.weekday
train["hour"] = train["datetime"].dt.hour
test["hour"] = test["datetime"].dt.hour기존의 datetime column을 제거해준다.
RandomForestRegressor
를 활용해 count에 대해 학습 시킨다.1
2
3
4
5
6
7
8train2 = train.drop(["count", "datetime", "registered", "casual"], axis=1)
test2 = test.drop(["datetime"], axis=1)
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_jobs=-1)
rf.fit(train2, train["count"])
result = rf.predict(test2)이렇게 하면 대략 0.46 내외의 점수가 나온다. 리더보드 기준 1000등 가량