使用sklearn.neural_network.MLPClassifier
拟合模型时,有时会在控制台打印一个警告:
ConvergenceWarning: Stochastic Optimizer:达到最大迭代次数(300),但优化尚未收敛。
有没有方法在运行时检测警告,以便我可以采取行动?
使用sklearn.neural_network.MLPClassifier
拟合模型时,有时会在控制台打印一个警告:
ConvergenceWarning: Stochastic Optimizer:达到最大迭代次数(300),但优化尚未收敛。
有没有方法在运行时检测警告,以便我可以采取行动?
warnings.catch_warnings
实时捕获警告。import warnings
with warnings.catch_warnings()
warnings.filterwarnings('error')
try:
model.fit(X, y)
except Warning:
# do something in response
这个结构将捕获任何在代码行中出现的警告,使你能够根据需要回应它。在这种情况下,你可以修改一些超参数使模型更容易收敛。
你也可以使用 warnings.filterwarnings
忽略警告,并指定要忽略的警告类型。
要忽略 ConvergenceWarning
:
from sklearn.execpetions import ConvergenceWarning
warnings.filterwarnings('ignore', category=ConvergenceWarning)
...
在拟合后检查n_iter_
属性。如果它小于您配置的最大迭代次数(max_iter
),则说明已经收敛。
n_iter
?一些代码会有所帮助。 - Shawn Cicoriaassert model.n_iter_ < MAX_ITER, "Convergence failed!"
- Rune Kaagaardwith warnings.catch_warnings(record=True) as caught_warnings:
clf.fit(X_train, y)
caught_warnings
来获取警告:for warn in caught_warnings:
print(warn)