Итак, я хочу поймать разные типы предупреждений в следующем коде:
score = cross_val_score(DecisionTreeClassifier(), X, y, scoring=f2_measure, cv=cv)
После запуска кода я получил два предупреждения:
UserWarning: The least populated class in y has only 1 members, which is less than n_splits=2.
% (min_groups, self.n_splits)), UserWarning)
UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 due to no true nor predicted samples.
Use `zero_division` parameter to control this behavior.
Я хотел бы поймать оба типа предупреждений, а затем обработать их по отдельности, я попытался использовать следующее:
with warnings.catch_warnings():
warnings.filterwarnings('error', category=UserWarning)
warnings.filterwarnings('error', category=UndefinedMetricWarning)
try:
score = cross_val_score(DecisionTreeClassifier(), X, y, scoring=f2_measure, cv=cv).mean()
except (UndefinedMetricWarning, UserWarning) as e:
print(type(e))
Но все предупреждения затем выдаются как UserWarning
, а UndefinedMetricWarning
нет. (Я не совсем уверен, но думаю, что эта проблема может быть вызвана тем, что UndefinedMetricWarning
унаследовано от UserWarning
).
Как идентифицировать и обрабатывать эти два типа предупреждений по отдельности?