특징 선택은 특징 간 중복을 줄이고 예측 성능은 높이는 최적의 특징 부분 집합을 구성하기위한 작업이다.
특징을 선택하는 방법은 필터 방법, 래퍼 뱅법, 임베디드 방법이 있고, 지금은 필터 방법을 설명한다.
SelectKBest
필터 방법 중 하나로, 중요도가 높은 K개의 특징을 선택한다.
개별 특징을 통계적으로 평가하여 빠르고 간단하지만, 특징 간의 상호작용을 고려하지 않는다.
from sklearn.feature_selection import *
selector = SelectKBest(f_classif, k = 10) #f통계량이 큰 10개
selector.fit(X_train, y_train)
selected_features = X_train.columns[selector.get_support()] #transform대신 get_support()는 df컬럼 보존, 인스턴스 대신 특징이름만 저장가능
Z_train = X_train.loc[:, selected_features]
Z_test = X_test.loc[:, selected_features]
특징 및 라벨에 따라 적절한 scoring_func를 사용한다.
통계량 | 특징 유형 | 라벨 | scoring_func |
카이제곱 통계량 | binary | binary | chi2 |
상호정보량 | binary | binary | mutual_info_classif |
continuous | |||
binary | continuous | mutual_info_regression | |
continuous | |||
F-통계량 | continuous | binary | f_classif |
continuous | continuous | f_regression |
참고 서적 : GIL's LAB, 「파이썬을 활용한 머신러닝 자동화 시스템 구축」, 위키북스(2022)
'⚙️ Tech > ML' 카테고리의 다른 글
[ML/python] 분류모델, 회귀모델 평가 (0) | 2025.02.12 |
---|---|
[ML] 사이킷런 지도 학습 클래스 정리 (0) | 2025.02.12 |
[ML/python] 불균형데이터 오버샘플링, 언더샘플링 (SMOTE, NearMiss) (0) | 2025.02.09 |
[ML/python] 스케일링 (정규화, 표준화, Normalization, Min-Max Scaling, Standardization, Z-score Scaling) (0) | 2025.02.09 |
[ML/python] 범주형, 서열형 변수 처리 (더미화, 치환) (0) | 2025.02.09 |