python gridSearch, RandomSearch
파이썬은 쓰면 쓸 수록 제공하는 부분에서는 친절하고 제공 안하는 부분에 대해서는 불친절한 것 같다.
pandas data frame 형태 데이터를 gridSearch 를 한번 해보려했는데 구조가 뭔가 복잡해서
검색해도 바로 찾지 못하겠어서 공유를 하고자 한다.
https://scikit-learn.org/stable/
위 사이트는 scikit-learn 사이트이다. 이 사이트를 왜 공유하냐면 모델마다 하이퍼파라메터가 상이한데 이에 해당하지 않으면 에러가 뜨기 때문이다.
사실 영어를 잘하면 도큐먼트를 읽으면되나 시간도 없고.. 영어도 못하고..
우선 scikit-learn에서 제공하는게 뭔지 잘 모르겠다면,
anaconda의 경로로 가보자.
default세팅이라고하면, 사용자>계정명>Anaconda3>Lib>site-packages>sklean에 있을 것이다.
가상환경의 경우, 사용자>계정명>Anaconda3>envs>가상환경명>Lib>site-packages>sklean이다.
무튼 잘 들어왔다면, 다양한 폴더들이 있는데
우리가 import sklearn을 하지 않고
from sklearn.svm import BaseCrossValidator를 임력했다고하면,
sklearn패키지 안에 svm이라는 폴더안에 객체인 BaseCrossValidator를 의미한다.
BaseCrossValidator에 해당하는 부분은 __init__.py 파일에 있는 것 같다.
다시 본론으로 grid Search를 어떻게 하느냐로 돌아가겠다.
우선 document에서 우리가 쓰고자 하는 모델을 검색해보자.
RandomForestRegressor를 쓰고자 한다면
아래와 같이 입력.
입력에는 parameter가 다양하게 있는데
이를 grid search 할 수 있다.
from sklearn.ensemble import RandomForestRegressor
rf=RandomForestRegressor()
grid search 할 목록을 딕셔너리의 형태로 구성해보자.
rf_grid={'criterion':['mse','mae'],
'max_features':['auto','sqrt','log2',None]}
다음과 같이 구성되었다면
from sklearn.model_selection import GridSearchCV
model=GridSearch(rf,rf_grid)
model.fit(X_train,Y_train)
이렇게 간단히 할 수 있다.