-
카테고리
-
세부 분야
딥러닝 · 머신러닝
-
해결 여부
미해결
GridSearchCV 로 교차검증 및 하이퍼 파라미터 튜닝시 오류
22.01.23 15:07 작성 조회수 757
0
UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-19: ordinal not in range(128)
답변을 작성해보세요.
0
권 철민
지식공유자2022.01.23
안녕하십니까,
해당 오류가 강의에 나오는 예제를 돌렸을 때 나오는 오류는 아닌것 같습니다만 맞는지요?
그렇다면, 강의 예제가 아니고, 또한 전체 소스코드도 올려주지 않으셨기 때문에 뭐가 오류인지는 확실히 모르겠지만 해당 오류는 ordinal encoding 과정에서 발생하는 것 같습니다. 원본 데이터와 encoding 부분을 다시 한번 확인해 보십시요.
감사합니다.
hoh
질문자2022.01.23
안녕하세요. 빠른 답변 감사드립니다.
소스는 제공해 주신 파일(4.3_앙상블학습_4.4_랜덤포레스트_4.5_GBM_Ver01.ipynb)을 수행하였고, 하나씩 에러 나는 부분을 찾아보니, 아래 GridSearchCV 함수에서 n_jobs=-1 을 삭제하면 에러가 나지 않습니다. processor 관련된 파라미터 같은데, 설치환경이나 OS 에 따른 문제인지 모르겠습니다.
소스코드 첨부가 안되서 주피터노트북의 해당 Cell을 카피하여 아래 페이스트하였습니다.
grid_cv = GridSearchCV(rf_clf , param_grid=params , cv=2, n_jobs=-1 )
from sklearn.model_selection import GridSearchCV
params = {
'n_estimators':[100],
'max_depth' : [6, 8, 10, 12],
'min_samples_leaf' : [8, 12, 18 ],
'min_samples_split' : [8, 16, 20]
}
# RandomForestClassifier 객체 생성 후 GridSearchCV 수행
rf_clf = RandomForestClassifier(random_state=0, n_jobs=-1)
grid_cv = GridSearchCV(rf_clf , param_grid=params , cv=2, n_jobs=-1 )
grid_cv.fit(X_train , y_train)
print('최적 하이퍼 파라미터:\n', grid_cv.best_params_)
print('최고 예측 정확도: {0:.4f}'.format(grid_cv.best_score_))
감사합니다.
권 철민
지식공유자2022.01.23
음, 저는 별 문제없이 수행이 됩니다만,,, 강의 예제에 있는 human activity dataset으로 된 데이터로 학습을 한건가요? 아님 다른 데이터 세트로 학습을 한건가요?
hoh
질문자2022.01.23
네. 강의 예제에 있는 human activity dataset으로 된 데이터로 학습을 하였습니다. 아, 데이터는 제가 강의에서 알려주신대로 UCIML에서 human activity dataset을 다운 받아서 사용했고, 소스는 제공해주신 소스를 그대로 수행해보았습니다.
다른 예제에서 n_jobs=-1 을 적용해보고 확인해보도록 하겠습니다.
감사합니다.
hoh
질문자2022.01.23
구글링을 해보니, 이런 경우가 가끔 발생하나봅니다.
해결책은 아래와 같이 나와 있네요.
GridSearchCv에서 n_jobs 값을 1외의 다른 값으로 바꾸려 할때, UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-21: ordinal not in range(18) 에러가 발생하는 경우,
C:\anaconda3\Lib\site-packages\joblib\externals\loky\backend\resource_tracker.py 의
def _send(self, cmd, name, rtype):
msg = '{0}:{1}:{2}\n'.format(cmd, name, rtype).encode('ascii') 에서 ascii를 utf8로 바꾸면 해결됩니다.
위의 안내대로 해당 파일 수정 후 해결하였습니다. 감사합니다.
답변 1