[python] scikit-learn을 활용한 피처 선택 결과 시각화

머신러닝에서 피처 선택은 모델의 성능을 향상시키는 중요한 단계입니다. scikit-learn은 피처 선택기를 제공하여 다양한 방법으로 피처 선택을 수행할 수 있습니다. 이 글에서는 scikit-learn을 사용하여 피처 선택을 수행한 후, 결과를 시각화하는 방법에 대해서 알아보겠습니다.

1. 피처 선택 수행하기

scikit-learn은 SelectKBestRFE (Recursive Feature Elimination) 등의 피처 선택기를 제공합니다. 이 중에서 SelectKBest는 통계적 기법을 사용하여 최상의 K개의 피처를 선택하는 방법이고, RFE는 반복적인 모델 훈련과 피처 제거를 통해 최상의 피처를 선택하는 방법입니다.

from sklearn.datasets import make_classification
from sklearn.feature_selection import SelectKBest, f_classif

# 예제 데이터 생성
X, y = make_classification(n_samples=100, n_features=10, random_state=0)

# SelectKBest를 사용하여 피처 선택
selector = SelectKBest(score_func=f_classif, k=5)
selected_X = selector.fit_transform(X, y)

위 코드에서는 make_classification 함수를 사용하여 가상의 분류 데이터를 생성한 후, SelectKBest를 사용하여 10개의 피처 중 상위 5개의 피처를 선택하였습니다.

2. 피처 선택 결과 시각화하기

피처 선택 후, 결과를 시각화하여 선택된 피처들이 어떻게 분포되어 있는지 확인할 수 있습니다. 이를 위해 matplotlib 패키지를 사용하여 간단한 막대 그래프를 그려보겠습니다.

import matplotlib.pyplot as plt

# 선택된 피처들의 인덱스 추출
selected_indexes = selector.get_support(indices=True)

# 선택된 피처들의 분포를 시각화
plt.bar(range(len(selected_indexes)), selector.scores_[selected_indexes])
plt.xticks(range(len(selected_indexes)), selected_indexes)
plt.xlabel('Feature Index')
plt.ylabel('Feature Score')
plt.show()

위 코드에서는 selector.get_support(indices=True)를 사용하여 선택된 피처들의 인덱스를 추출한 후, selector.scores_[selected_indexes]를 사용하여 선택된 피처들의 점수를 가져왔습니다. 이를 막대 그래프로 시각화하여 선택된 피처들의 점수를 확인할 수 있습니다.

마무리

scikit-learn을 활용하여 피처 선택을 수행한 후, 결과를 시각화하는 방법에 대해 알아보았습니다. 피처 선택은 모델의 성능 개선을 위해 매우 유용한 기술이므로, 이러한 시각화 기법을 통해 피처 선택 결과를 파악하여 적절한 피처를 선택할 수 있도록 노력해야 합니다.

이 글은 scikit-learn 공식 문서를 참고하여 작성되었습니다.