Я использую разные наборы данных, чтобы определить лучший алгоритм моделирования для каждого набора данных. Я просматриваю каждый набор данных, чтобы проверить различные алгоритмы и выбрать лучшие модели на основе результатов теста. Я знаю, что некоторые из моих наборов данных не собираются сходиться для определенных моделей (например, LogisticRegression) и получают предупреждение о сходимости (например, lbfgs не удалось сойтись (status = 1) :). Я не хочу игнорировать предупреждение. Моя цель - получить оценку для моделей, которые сходятся и не возвращают никакого значения, если я получаю это предупреждение о конвергенции.
Я могу обойти это, превратив это предупреждение в ошибку с помощью warnings.filterwarnings ('error', category = ConvergenceWarning, module = 'sklearn'), а затем выполнить попытку и за исключением того, чтобы получить то, что я хочу. Проблема с этим методом заключается в том, что если есть какая-либо другая ошибка, помимо предупреждения о конвергенции sklearn, она обойдет строку try, и я не смогу узнать, что вызывает ошибку. Есть ли другой способ зафиксировать это предупреждение, кроме как превратить его в ошибку?
Вот упрощенный обзор моего кода (данные не включены как большие наборы данных, и я не думаю, что это имеет отношение к вопросу). Большинство вопросов о stackoverflow, которые мне удалось найти, касаются того, как подавить ошибку (Как сделать отключить ConvergenceWarning с помощью sklearn?) или превратить это предупреждение в ошибку, и я не нашел другого способа зафиксировать предупреждение, не превращая его в ошибку.
from sklearn.linear_model import LogisticRegression
from sklearn.exceptions import ConvergenceWarning
warnings.filterwarnings('error',category=ConvergenceWarning, module='sklearn')
try:
model=LogisticRegression().fit(x_train,y_train)
predict=model.predict(x_test)
except:
print('model didnt converge')
raise
в свойexcept
блок. Также вы, вероятно, захотитеexcept Exception:
, а не простоexcept:
. - person BallpointBen   schedule 03.03.2021