Grid Search 방식
sklearn.model_selection.**GridSearchCV**
- 가능한 모든 하이퍼파라미터 조합을 시도하여 최적의 조합을 찾는 방법
- 장점 : 작은 하이퍼파라미터 공간이거나 탐색해야 할 조합의 수가 적을 때 유용
- 단점 : 하이퍼파라미터 탐색 공간이 커질수록 계산 비용이 크게 증가할 수 있음
- Initializer 매개변수
- estimator
: 사용할 머신러닝 모델을 지정
- param_grid
: 그리드 서치로 탐색할 하이퍼파라미터 조합을 지정
- cv
: 교차 검증을 위한 폴드 수를 지정
- scoring
: 모델의 성능을 평가하는 지표를 선택
- n_jobs
: 병렬 처리를 위한 CPU 코어 수를 지정
- 메소드
- fit(X, y)
: 학습
- predict(X)
: 분류-추론한 class. 회귀-추론한 값
- predict_proba(X)
: 분류문제에서 class별 확률을 반환
- 그리드 서치 결과 조회
- best_params_
: 최적의 하이퍼파라미터 조합을 출력
- best_score_
: 최고의 성능 지표 값을 출력
- best_estimator_
: 가장 좋은 성능을 낸 모델을 반환
- cv_results_
: 그리드 서치의 세부 결과를 데이터프레임 형태로 제공
Random Search 방식
sklearn.model_selection.**RandomizedSearchCV**
import pickle
with open('pipeline_bc.pkl', 'wb') as fw:
pickle.dump(pl, fw)
pipeline.fit()
pipeline.fit_transform()
💡 프로세스이름__하이퍼파라미터
형식으로 지정
from sklearn.decomposition import PCA #차원 축소 -> feature를 줄여준다.
pca = PCA(n_components=2) # feature를 몇개로 줄일지 -> feature extraction 방식
X_trained_pca = pca.fit_transform(X_train)
# GridSearchCV생성
# key: 하이퍼파라미터 이름 (파이프라인에등록한이름__하이퍼파라미터이름)
# value: 후보-리스트
params = {
"pca__n_components":[5, 10, 15, 20, 25],
"svm__C":[0.001, 0.01, 0.1, 0.5, 1],
"svm__gamma":[0.001, 0.01, 0.1, 0.5, 1]
}
gs = GridSearchCV(pl2, # 모델->pipeline
params,
scoring='accuracy',
cv=4,
n_jobs=-1
)
gs.fit(X_train, y_train)
: 하나의 데이터셋을 구성하는 feature들(컬럼들) 마다 다른 전처리를 해야 하는 경우 사용
sklearn.compose.ColumnTransformer
sklearn.compose.make_column_transformer