본문 바로가기

STUDY

파이썬 스터디 7주차(캐글)

저 진짜 거짓말 안하고 머신러닝 공부 많이 했어요.

... 아니 그냥 그렇다구요. 곧 정리해 올리겠읍니다.

 

햄깅 사랑해

 

https://youtu.be/mkytmstQKzI

 

캐글 타이타닉 13. Model development - Machine learning(Randomforest)

 

사이킷런 : 머신러닝의 A to Z를 가지고 있는 파이썬 라이브러리.

from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics
from sklearn.model_selection import train_test_split
#사이킷런 관련 라이브러리 불러오기

X_train = df_train.drop('Survived', axis=1).values
target_label = df_train['Survived'].values
X_test = df_test.values
#df_train의 survived칼럼을 target_label로 빼주고 df_test의 values를 x_test에 저장

- 지도학습SupervisedLearning : 목적(target)을 주는 경우. '정답이 있는 데이터를 보고 학습하는 방법'

- 이 예제에서는 valid라는 걸 만들어 모델평가를 한 뒤 test를 수행 할 예정

X_tr, X_vld, y_tr, y_vld = train_test_split(X_train, target_label, test_size=0.3, random_state=2018)
#x_train데이터와 target_label데이터를 X_tr, X_vld, y_tr, y_vld로 나눔. tr데이터 0.7, vld데이터 0.3 비중
#random_state는 seed값이라 생각하면 됨.

model = RandomForestClassifier() #모델을 만들고
model.fit(X_tr, y_tr) #학습시킨 뒤
prediction = model.predict(X_vld) #예측값을 prediction에 저장

- 랜덤포레스트RandomForest : 결정트리(decision tree)기반. 여러 결정트리들을 앙상블 한 모델

 

 

https://youtu.be/4SIKWBjLUKM

캐글 타이타닉 14. Machine learning prediction - feature importance and prediction on test set

 

Feature Importance

- 학습된 모델이 어떤 feature에 많은 영향을 받았는지 확인할 수 있음

- pandas series로 쉽게 sorting해 그래프를 그릴 수 있음

from pandas import Series

feature_importance = model.feature_importances_
Series_feat_imp = Series(feature_importance, index=df_test.columns)
#학습시켰던 model의 feature_importances_를 저장해 series로 만듦

 

- 참고로 Series_feat_imp는 이렇게 생겼다. 원래라면 가중치만 있는 데이터(아래)에 인덱스값으로 컬럼명을 넣어 Series로 만들어 준 것.

array([0.09550075, 0.08830232, 0.33371004, 0.08959641, 0.11802446,
       0.00995627, 0.04032851, 0.13677816, 0.03362661, 0.00573487,
       0.01431581, 0.01397107, 0.02015471])

 

plt.figure(figsize=(8, 8)) #도화지 크기 설정
Series_feat_imp.sort_values(ascending=True).plot.barh() #내림차순 정렬+뒤집힌 막대그래프
plt.xlabel('Feature importance'); plt.ylabel('Feature') #축(라벨)이름 설정
plt.show() #도화지 보여주기

 

- Fare와 Initial_2, Age_cat의 가중치가 다른 피처에 비해 높게 측정되었음을 확인할 수 있음

 

- feature importance로 좀 더 정확도가 높은 모델을 얻기 위해 feature selection을 할 수도 있고, 좀 더 빠른 모델을 위해 feature를 제거할 수도 있음. 그리고 같은 데이터와 같은 모델을 사용하더라도 파라미터 값에 따라 다른 결과가 나오기도 함.

 

* 머신러닝 공부로 캐글 수상자들의 코드를 보고 3번 따라 칠 것을 추천함. 첫번째엔 문법을 익히고, 두번째엔 테크닉을 익히고, 세번째에는 '나만의'방식을 찾아볼 것.