하이퍼 파라미터는 머신러닝 알고리즘을 구성하는 주요 구성 요소이며, 이 값을 조정해 알고리즘의 예측 성능을 개선할 수 있습니다.
사이킷런은 GridSearchCV 를 제공해 하이퍼 파라미터를 순차적으로 입력하면서 편리하게 최적의 파라미터를 찾아 준다.
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import cross_val_score
import numpy as np
dt = DecisionTreeClassifier(max_depth=3, min_samples_split= 5)
X = iris_df.drop('label', axis=1)
y = iris_df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1, shuffle=True, test_size=0.2)
scores = cross_val_score(dt, X_train, y_train, scoring = 'accuracy', cv=5)
print('교차 검증별 정확도 :', np.round(scores, 4))
print("평균 검증 정확도 :", np.round(np.mean(scores), 4))
DecisionTree 같은 경우 max_depth, min_samples_split 등 여러 파라미터가 존재한다.
이런 파라미터들은 사람이 직접 정해줘야 하는데 데이터에 맞는 최적의 하이퍼 파라미터 조합을 찾기엔 오랜 기간, 자원 손실이 크다.
from sklearn.model_selection import GridSearchCV
parms = {
'max_depth':[2,4,6],
'min_samples_split':[2, 4]
}
grid = GridSearchCV(dt, parms, cv=5, refit=True)
grid.fit(X_train, y_train)
print("GridSearch 최적의 파라미터 :", grid.best_params_)
print("GridSearch 최고 정확도", grid.best_score_)
탐색할 파라미터를 딕셔너리 형태로 만들어 사용한다.
cv는 kfold의 k를 뜻한다.
refit는 최적의 파라미터로 재 학습을 시킬지의 여부다.
best_estimator = grid.best_estimator_
pred = best_estimator.predict(X_test)
print("테스트 데이터 정확도 :", accuracy_score(y_test, pred))
#테스트 데이터 정확도 : 0.9666666666666667
최적의 파라미터를 찾은 후 별도의 테스트 세트를 이용해 평가하는 것이 머신러닝 모델 적용 방법이다.
728x90
'AI' 카테고리의 다른 글
단순 논리 회로 (1) | 2023.10.10 |
---|---|
[인공지능 학습 HUB] (0) | 2023.10.10 |
[ML] K-Fold, Stratified K-fold 교차 검증 (0) | 2022.12.03 |
[글] 독립 변수, 종속 변수 (feature, label) (0) | 2022.11.27 |
[글] AI, 머신러닝, 딥러닝, 지도학습, 비지도학습 (0) | 2022.11.25 |