강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

taylous님의 프로필 이미지
taylous

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

로지스틱 회귀의 이해와 위스콘신 유방암 예측 실습

해결된 질문

작성

·

356

0

현재 개발환경에 설치되어 있는 라이브러리 버전입니다.

- scikit-learn: 0.22.2

- scipy: 1.4.1

아래의 코드를 실행했을 때 'FitFailedWarning'이 발생합니다.

lr_clf = LogisticRegression()
lr_clf.fit(X_train, y_train)
lr_preds = lr_clf.predict(X_test)

params={'penalty':['l2', 'l1'],
        'C':[0.01, 0.1, 1, 1, 5, 10]}

grid_clf = GridSearchCV(lr_clf, param_grid=params, scoring='accuracy', cv=3 )
grid_clf.fit(data_scaled, cancer.target)
print('최적 하이퍼 파라미터:{0}, 최적 평균 정확도:{1:.3f}'.format(grid_clf.best_params_, 
                                                  grid_clf.best_score_))

그래서 찾아보니 블로그에서 아래와 같은 정보를 얻었습니다.

...생략... 사이킷런 0.22 버전에서 LogisticRegression 클래스의 solver 매개변수 기본값이 liblinear에서 lbfgs로 변경될 예정입니다. 사이킷런 0.20 버전에서 solver 매개변수를 지정하지 않는 경우 이에 대한 경고 메세지를 출력합니다. 경고 메세지를 피하고 향후 변경될 내용을 적용하기 위하여 solver 매개변수를 lbfgs로 설정합니다.

이후 아래처럼 코드를 수정하고 실행하니 warning 없이 정상적으로 동작했습니다.

lr_clf = LogisticRegression(solver='liblinear')
lr_clf.fit(X_train, y_train)
lr_preds = lr_clf.predict(X_test)

params={'penalty':['l2', 'l1'],
        'C':[0.01, 0.1, 1, 1, 5, 10]}

grid_clf = GridSearchCV(lr_clf, param_grid=params, scoring='accuracy', cv=3 )
grid_clf.fit(data_scaled, cancer.target)
print('최적 하이퍼 파라미터:{0}, 최적 평균 정확도:{1:.3f}'.format(grid_clf.best_params_, 
                                                  grid_clf.best_score_))

이렇게 해도 문제가 없는지 궁금하여 문의하였습니다.

감사합니다.

답변 1

1

권 철민님의 프로필 이미지
권 철민
지식공유자

네 별 문제 없어 보입니다.

문의하셔서 저도 scikit learn 문서를 찾아봤더니 l1, l2 다 적용하려면 liblinear를 solver에 지정해야 할 것 같습니다.

감사합니다.

taylous님의 프로필 이미지
taylous

작성한 질문수

질문하기