sklearn으로 시험을 준비하던 중 후기를 보니 많은 사람들이 좀더 깊은 과정을 수행하면 감점이 되는 경우를 보았다.
당연하겠지만 분석가의 주관이 많이 들어갈 수록 점수가 낮아지는 것은 당연할 수 있다.
작업2유형의 분류문제중 가장 사용이 쉬운(?) RandomForestClassifier를 사용하던 중 하이퍼파라미터를 제한시간이 있는 시험속에서 어떻게 사용할지 고민을 해봐야했다.
결론: GridSerchCV를 통해 추출 된 하이퍼파라미터를 사용한다.
비교를 통해 얻어는 값이 내가 많지 않은 경험적 선택보다 더 나을 확율이 높기 때문!
from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier(random_state = 1)
from sklearn.model_selection import GrideSerchCV
gs = GrideSerchCv(rf,param_grid=pram)
# 방법1 특정 값을 지정하여 넣기
params = {'n_estimators':[100,200,300,400,500], 'max_depth':[1,2,3,4,5]}
# 방법2 랜덤하게 생성 -> 배열에 여러게 넣어주는게 좋음
from scipy.stats import randint
params = {
'n_estimators': randint(100, 1000), # 100에서 1000 사이의 값에서 랜덤 선택
'max_depth': randint(1, 10), # 1에서 10 사이의 값에서 랜덤 선택
}
gs = GridSearchCV(rf, param_grid=params, cv=5, scoring='roc_auc', n_jobs=-1)
gs.fit(X, y)
print(f"params: {gs.best_params_}")
print(f"score: {gs.best_score_}")
rs = RandomizedSearchCV(rf, param_distributions=params, n_iter=5, cv=5, scoring='roc_auc', random_state=1, n_jobs=-1)
rs.fit(X, y)
print(f"Best params: {rs.best_params_}")
print(f"Best score: {rs.best_score_}")