하나의 특성을 선택할 때마다 현재 남은 특성 개수(m)에 대해 교차 검증을 수행하므로 m×cv개의 모델을 만듭니다. 이렇게 단계마다 많은 모델을 만들기 때문에 일반적으로 RFE나 SelectFromModel보다 느립니다. n_jobs 매개변수를 1 이상으로 지정하여 여러 코어를 사용하는 것이 좋습니다.
다음 코드에서 전진 선택 방법으로 n_features_to_select에 한 개의 특성에서 12개의 특성까지 지정해 보겠습니다. 모델을 훈련한 후 선택된 특성은 support_ 속성에 True로 표시됩니다. 이 속성을 사용하여 X_train_std에서 선택된 특성만 사용하겠습니다. 그다음 훈련 데이터셋에 대한 점수를 계산하여 scores 리스트에 추가합니다.
>>> scores = []
>>> for n_features in range(1, 13):
... sfs = SequentialFeatureSelector(knn, n_features_to_select=n_features,
... n_jobs=-1)
... sfs.fit(X_train_std, y_train)
... f_mask = sfs.support_
... knn.fit(X_train_std[:, f_mask], y_train)
... scores.append(knn.score(X_train_std[:, f_mask], y_train))
scores 리스트에 담긴 정확도 점수를 앞에서와 같이 그래프로 출력해 보겠습니다.