특성 중요도에 관한 이 절을 마무리하기 위해 사이킷런의 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() 메서드를 사용할 수 있습니다.

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