use*_*624 15 python scikit-learn
检查sklearn模型是否已安装的最优雅方法是什么?即它是否fit()在实例化之后调用了它的函数.
ely*_*ase 10
你可以这样做:
from sklearn.exceptions import NotFittedError
for model in models:
try:
model.predict(some_test_data)
except NotFittedError as e:
print(repr(e))
Run Code Online (Sandbox Code Playgroud)
理想情况下,您可以检查model.predict预期结果的结果,但如果您想知道是否所有模型都适合,那么就足够了.
一些评论者建议使用check_is_fitted.我认为check_is_fitted是一种内部方法.大多数算法会调用check_is_fitted他们的预测方法,而预测方法可能会NotFittedError在需要时提升.check_is_fitted直接使用的问题在于它是特定于模型的,即您需要根据算法知道要检查的成员.例如:
???????????????????????????????????????????????????????????????
? Tree models ? check_is_fitted(self, 'tree_') ?
? Linear models ? check_is_fitted(self, 'coefs_') ?
? KMeans ? check_is_fitted(self, 'cluster_centers_') ?
? SVM ? check_is_fitted(self, 'support_') ?
???????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
等等.所以一般情况下我会建议调用model.predict()并让特定算法处理检查它是否已经安装的最佳方法.
我为分类器执行此操作:
def check_fitted(clf):
return hasattr(clf, "classes_")
Run Code Online (Sandbox Code Playgroud)