-
scikit-learn GridSearchCV ConvergenceWarning 끄기문제해결 2023. 3. 13. 14:36먼저 아래는 일반적인 해결법들
1. ignore_warnings
from sklearn.exceptions import ConvergenceWarning
from sklearn.utils.testing import ignore_warnings
@ignore_warnings(category=ConvergenceWarning)
def ~(~):모듈 앞에서 위와 같이 사용2. filterwarnings, simplefilterimport warnings
from sklearn.exceptions import ConvergenceWarning
with warnings.catch_warnings():
warnings.filterwarnings('ignore', 'Solver terminated early.*') #1
warnings.filterwarnings('ignore', category=ConvergenceWarning) #2ConvergenceWarning이 발생하는 위치(보통 fit 함수 호출)에서 #1 또는 #2로 사용3. 환경변수 설정import sklearn.exceptions
os.environ["PYTHONPATH"] = os.path.dirname(sklearn.exceptions.__file__)
os.environ["PYTHONWARNINGS"] = "ignore::exceptions.ConvergenceWarning:sklearn.svm[.*]"PYTHONWARNINGS에 들어가는 필터 포맷은 action:message:category:module:line 형태4. ConvergenceWarningfrom sklearn.exceptions import ConvergenceWarning
ConvergenceWarning('ignore')어디서 나온지 모를 사용법이라 혹시나 했는데 역시나 효과없음위의 방법들은 GridSearchCV의 n_jobs 파라미터를 1이 아닌 값으로 사용할 경우에 효과 없음
학습이 여러 개의 쓰레드로 나눠져서 수행되면서 분기된 새로운 쓰레드에는 ignore 설정이 적용되지 않는 것이 아닐까하는 추측아래는 결국 찾은 해결법1. simplefilter, 환경변수if not sys.warnoptions:
warnings.simplefilter("ignore") #1
os.environ["PYTHONWARNINGS"] = "ignore" #2
warnings.filterwarnings('ignore', 'Solver terminated early.*') #3
warnings.filterwarnings('ignore', category=ConvergenceWarning) #4모듈의 시작부에 정의해야함#1, #2는 모든 warning 차단
#3, #4는 max_iter로 인한 ConvergenceWarning 차단위에서 안된 이유는 with ~ 부분 때문인듯함반응형'문제해결' 카테고리의 다른 글
[IPC] C#-C++ 간 Named Pipe 연결시 겪은 문제 2가지 (0) 2023.03.13 fbprophet importing plotly failed. interactive plots will not work. (0) 2023.03.13 딜라이브 + ipTIME 인터넷이 안돼 (0) 2023.03.13 갤럭시 워치5 카카오톡 연결 문제(Wear OS 연동 설정) (0) 2022.11.23 WSL 세팅 중 Error 0x80370102 발생 시 체크리스트 (0) 2022.04.19