BLOG
인공지능

데이터 전처리 : 사이킷런 랜덤포레스트의 특성 중요도, feature_importnaces_


March 20, 2022, 10:13 p.m.



데이터셋에서 유용한 특성을 선택하는 방법은 여러가지가 있습니다. 이번 포스트에서는 그중에 가장 간단하다고 볼 수 있는 랜덤포레스트의 특성 중요도를 이용하는 방법에 대해서 알아보겠습니다.

랜덤 포레스트를 사용하면 그 안에 들어있는 모든 결정 트리의 평균적인 불순도 감소를 이용해 특성 중요도를 추산할 수 있습니다.

사이킷런을 사용하면 쉽게 구할 수 있는데요, 사이킷런의 RandomForestClassifier 모델을 훈련한 뒤에 feature_importnaces_ 속성에 접근하여 알 수 있습니다. 바로 알아보겠습니다.

from sklearn.ensemble import RandomForestClassifier

forest = RandomForestClassifier(n_estimators=500, random_state=1)

forest.fit(X, y)
importances = forest.feature_importances_

print(importances)

랜덤포레스트 분류기를 선언하고 학습을 시켜줍니다. 그 다음 feature_importances_를 출력해 보았습니다.

[0.035815   0.02560722 0.02779721 0.02289338 0.04093295 0.03062564
 0.0316983  0.023372   0.03488199 0.02869951 0.02437036 0.02523432
 0.04003586 0.03056395 0.02660496 0.0306234  0.03790462 0.03418577
 0.03079562 0.02680217 0.04208585 0.02985782 0.02753256 0.02409818
 0.04546158 0.03072963 0.03422563 0.02749452 0.04455746 0.02996054
 0.02758578 0.02696622]

각 특성별로 특성의 중요도가 나오는 모습을 볼 수 있습니다. 특성의 모든 중요도의 합은 1입니다.

이 값을 참고해서 가장 중요한 특성을 추리면 될 것 같습니다.

랜덤포레스트 결정트리



Search