[DSSchool_Level6] Kaggle - Bike Sharing Demand2
컬럼별로 판다스, 시각화를 통하여 데이터 분석을 하여 머신런닝 예측 모델 개선 아이디어를 도출해 본다.
그리고 도출한 인사이트를 활용하여 머신런닝 알고리즘에 적용해, Kaggle 에 제출하여 점수를 확인한다.
"자전거 대여량 예측하기" 데이터 분석 순서
- read csv 로 데이터 읽어오기
- 전체 데이터가 어떻게 구성되어 있는지 확인(데이터 수, 데이터 타입...)
- 전처리
- 데이터 분석 - 분석전 결과 예상/ 시각화, 판다스로 분석 / 인사이트 도출
- Decision Tree 를 사용하여 학습(fit), 예측(predict)
- sampleSubmission.csv 에 예측값 넣기
- Kaggle 제출
Classification & Regression
데이터를 받았을때 가장먼저 판단해야 할 것은, 풀어야 할 문제가 Classification 인지, Regression 인지 파악하는 것이 중요하다.
Classification |
* 맞춰야 하는 정답(Label)이 특정 분류중 하나 예) 0 or 1 / 어떤승객이 살았냐 죽었냐(타이타닉) * Categorical(같냐 다르냐가 중요) * DecisionTreeClassifier 사용
from sklearn.tree import DecisionTreeClassifier model = DecisionTreeClassifier() |
Regression |
* 맞춰야 하는 정답(Label)이 높고 낮음의 숫자 예) 주가예측 / 자전거 대여량이 높냐낮냐 * Continuous (연속적. 값이 높냐낮냐가 중요) * DicisionTreeRegressor 사용
from sklearn.tree import DecisionTreeRegressor model = DecisionTreeRegressor() |
RandomForest
복원추출로 랜덤하게 데이터를 샘플링해서 여러개의 트리를 만들어 섞어쓰는 것.
(중복을 허용하면서 샘플링하므로, 트리생성을 무제한으로 만들 수 있다)
- DecisionTree 보다 좋은 성능을 보장
- 현장에서 자주 쓰이는 알고리즘
from sklearn.ensemble import RandomForestRegressor
# random_state: 랜덤한 결과가 안나오도록 고정
model = RandomForestRegressor(random_state=37)
DecisionTree 원리
-
넣어준 Feature 를 가지고 나올수 있는 모든 조건을 만든다
-
조건을 활용해 가지를 쳐서 나무를 만드는데,
-
가지에 들어갈 조건의 순서는, 조건 마다의 지니임플릭트를 계산하여
-
가장 수치가 낮은 조건을 트리 최상위에 올린다(좋은 조건일수록 상위에 자리함)
-
수치가 0이 거나, 가지를 칠 데이터가 없거나, max_depth 에 도달할때까지 가지를 친다
좋은 조건 |
수치가 크게 벌어지는 조건 예) 타이타닉을 기준으로, 생존10 : 사망90 (성별컬럼 같은) |
나쁜 조건 |
수치가 벌어지지 않는 조건 예) 생존50:사망50 |