트리 기반 특성 선택

Python으로 배우는 차원 축소

Jeroen Boeye

Head of Machine Learning, Faktion

랜덤 포레스트 분류기

랜덤 포레스트 개요

Python으로 배우는 차원 축소

랜덤 포레스트 분류기

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

rf = RandomForestClassifier()

rf.fit(X_train, y_train)

print(accuracy_score(y_test, rf.predict(X_test)))
0.99
Python으로 배우는 차원 축소

랜덤 포레스트 분류기

주석 있는 랜덤 포레스트 개요

Python으로 배우는 차원 축소

특성 중요도 값

rf = RandomForestClassifier()

rf.fit(X_train, y_train)

print(rf.feature_importances_)
array([0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.04, 0.  , 0.01, 0.01,
       0.  , 0.  , 0.  , 0.  , 0.01, 0.01, 0.  , 0.  , 0.  , 0.  , 0.05,
       ...
       0.  , 0.14, 0.  , 0.  , 0.  , 0.06, 0.  , 0.  , 0.  , 0.  , 0.  ,
       0.  , 0.07, 0.  , 0.  , 0.01, 0.  ])
print(sum(rf.feature_importances_))
1.0
Python으로 배우는 차원 축소

특성 선택자로서의 중요도

mask = rf.feature_importances_ > 0.1

print(mask)
array([False, False, ..., True, False])
X_reduced = X.loc[:, mask]

print(X_reduced.columns)
Index(['chestheight', 'neckcircumference', 'neckcircumferencebase',
       'shouldercircumference'], dtype='object')
Python으로 배우는 차원 축소

랜덤 포레스트로 RFE

from sklearn.feature_selection import RFE

rfe = RFE(estimator=RandomForestClassifier(), 
          n_features_to_select=6, verbose=1)

rfe.fit(X_train,y_train)
94개 특성으로 추정기를 학습 중.
93개 특성으로 추정기를 학습 중
...
8개 특성으로 추정기를 학습 중.
7개 특성으로 추정기를 학습 중.
print(accuracy_score(y_test, rfe.predict(X_test))
0.99
Python으로 배우는 차원 축소

랜덤 포레스트로 RFE

from sklearn.feature_selection import RFE

rfe = RFE(estimator=RandomForestClassifier(), 
          n_features_to_select=6, step=10, verbose=1)

rfe.fit(X_train,y_train)
94개 특성으로 추정기를 학습 중.
84개 특성으로 추정기를 학습 중.
...
24개 특성으로 추정기를 학습 중.
14개 특성으로 추정기를 학습 중.
print(X.columns[rfe.support_])
Index(['biacromialbreadth', 'handbreadth', 'handcircumference', 
       'neckcircumference', 'neckcircumferencebase', 'shouldercircumference'], dtype='object')
Python으로 배우는 차원 축소

Ayo berlatih!

Python으로 배우는 차원 축소

Preparing Video For Download...