SBS 알고리즘은 각 단계에서 가장 좋은 특성 조합의 점수를 모았습니다. 이제 재미있는 부분입니다. 검증 데이터셋에서 계산한 KNN 분류기의 정확도를 그려 보겠습니다. 코드는 다음과 같습니다.
>>> k_feat = [len(k) for k in sbs.subsets_]
>>> plt.plot(k_feat, sbs.scores_, marker='o')
>>> plt.ylim([0.7, 1.02])
>>> plt.ylabel('Accuracy')
>>> plt.xlabel('Number of features')
>>> plt.grid()
>>> plt.tight_layout()
>>> plt.show()
그림 4-8에서 볼 수 있듯이 특성 개수가 줄었을 때 검증 데이터셋에서 KNN 분류기의 정확도가 향상되었습니다. 3장 KNN 알고리즘에서 설명했던 차원의 저주가 감소하기 때문입니다. 또 k = {3, 7, 8, 9, 10, 11, 12}에서 분류기가 100% 정확도를 달성한 것을 볼 수 있습니다.
▲ 그림 4-8 최적의 특성 조합에 따른 성능