[Day 31] Model Selection

2022. 3. 8. 19:11AI/Codestates

728x90
반응형

https://www.codestates.com/

 

코딩부트캠프 | 코드스테이츠 - 비전공생도 개발자가 될 수 있습니다

코딩부트캠프를 찾는다면? 개발자로 커리어 전환을 위한 책임있는 코딩 교육 기관! 서비스 기획자, 그로스 마케터, 데이터 사이언티스트 등 다양한 전문 커리어에 도전하세요. 취업 성공의 후기

www.codestates.com


Warm-up

  • 교차검증 ( Cross - Validation )

Note

 

  • 교차검증 ( Cross - Validation )
    • 시계열 ( Time Series ) 데이터에 적합하지 않음
  • TargetEncoder
    • OrdinalEncoder 보다 요즘 성능이 좋음.
  • 하이퍼파라미터 튜닝
    • 최적화 : 훈련 데이터로 더 좋은 성능을 얻기 위해 모델을 조정하는 과정
    • 일반화 : 처음 본 데이터로 얼마나 좋은 성능을 내는지
    • RandomizedSearchCV : 무작위
from sklearn.pipeline import make_pipeline
from category_encoders import OrdinalEncoder
from sklearn.impute import SimpleImputer
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import randint, uniform
from sklearn.model_selection import RandomizedSearchCV



pipe = make_pipeline(
    OrdinalEncoder(), 
    SimpleImputer(), 
    RandomForestClassifier(random_state=2)
)

dists = {     
    'simpleimputer__strategy': ['mean', 'median'], 
    'randomforestclassifier__n_estimators': randint(50, 500), 
    'randomforestclassifier__max_depth': [5, 10, 15, 20, None], 
    'randomforestclassifier__max_features': uniform(0, 1) # max_features
}

clf = RandomizedSearchCV(
    pipe, 
    param_distributions=dists, 
    n_iter=20, 
    cv=3, 
    scoring='f1',  
    verbose=1,
    n_jobs=-1
)

clf.fit(X_train, y_train)
print('최적 하이퍼파라미터: ', clf.best_params_)

 

  • GridSearchCV : 전체
from category_encoders import TargetEncoder
from sklearn.model_selection import GridSearchCV

pipe = make_pipeline(
    TargetEncoder(), 
    SimpleImputer(), 
    RandomForestClassifier(random_state=2,class_weight='balanced')
)

dists = {       
    'simpleimputer__strategy': ['mean', 'median'], 
    'randomforestclassifier__n_estimators': [10, 50, 100], 
    'randomforestclassifier__max_depth': [10, 50, 100],
    'randomforestclassifier__max_features': ['auto','log2'], 
    'randomforestclassifier__min_samples_leaf' : [1, 3, 5]
}

clf = GridSearchCV(
    pipe, 
    param_grid=dists, 
    cv=3, 
    scoring='f1',
    verbose=1,  
    n_jobs=-1
)

clf.fit(X_train, y_train)
print('최적 하이퍼파라미터: ', clf.best_params_)

Review

더보기

최작의 파라미터를 찾기위해 너무 무리해서 돌리는 바람에 7시간 돌리고 결과를 보지 못했다. 범위를 조금씩 좁혀가며 돌리는게 제일 좋을거 같다.


참고

728x90
반응형

'AI > Codestates' 카테고리의 다른 글

[Day 33] Choose your ML problems  (0) 2022.03.10
[Day 32] Sprint Review  (0) 2022.03.08
[Day 30] Evaluation Metrics for Classification  (0) 2022.03.04
[Day 29] Random Forests  (0) 2022.03.03
[Day 28] Decision Trees  (0) 2022.03.03