더북(TheBook)

특성 중요도에 관한 이 절을 마무리하기 위해 사이킷런의 SelectFromModel을 살펴보겠습니다. 이 클래스는 모델 훈련이 끝난 후 사용자가 지정한 임계 값을 기반으로 특성을 선택합니다.20 Pipeline의 중간 단계에서 RandomForestClassifier를 특성 선택기로 사용할 때 유용합니다. 6장에서 살펴볼 Pipeline 클래스는 여러 전처리 단계를 하나의 추정기 인터페이스로 연결해 줍니다. 예를 들어 다음 코드에서는 임계 값을 0.1로 하여 가장 중요한 다섯 개의 특성으로 데이터셋을 줄였습니다.21

>>> from sklearn.feature_selection import SelectFromModel

>>> sfm = SelectFromModel(forest, threshold=0.1, prefit=True)
>>> X_selected = sfm.transform(X_train)
>>> print('이 임계 ... 만족하는 샘플 의 수:', X_selected.shape[1])
이 임계 조건을 만족하는 샘플의 수: 5

>>> for f in range(X_selected.shape[1]):
...     print("%2d) %-*s %f" % (f + 1, 30,
...                             feat_labels[indices[f]],
...                             importances[indices[f]]))
1) Proline                        0.185453
2) Flavanoids                     0.174751
3) Color intensity                0.143920
4) OD280/OD315 of diluted wines   0.136162
5) Alcohol                        0.118529

 

 


20 역주 기본적으로 기반 모델의 coef_나 feature_importances_ 속성과 임계 값을 비교하여 특성을 선택합니다. 사이킷런 0.24 버전에서 비교할 속성을 지정할 수 있는 importance_getter 매개변수가 추가되었습니다. 또한, 임계 값을 지정하는 threshold 매개변수를 'median' 또는 'mean'으로 지정하여 중간 값이나 평균값을 지정할 수 있습니다. 이 매개변수의 기본값은 'mean'입니다.

21 역주 SelectFromModel 클래스의 fit() 메서드는 전달된 기반 모델의 fit() 메서드를 호출하여 훈련시킵니다. 앞에서 랜덤 포레스트 모델을 이미 훈련시켰기 때문에 여기서는 바로 transform() 메서드를 사용할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.