检查是否安装了sklearn模型的最优雅方法是什么?即它的fit()函数是否在实例化之后被调用。

最佳答案

您可以执行以下操作:

from sklearn.exceptions import NotFittedError

for model in models:
    try:
        model.predict(some_test_data)
    except NotFittedError as e:
        print(repr(e))

理想情况下,您将对照预期结果检查model.predict的结果,但是如果您只想知道是否适合该模型,那么就足够了。

更新:

一些评论者建议使用check_is_fitted。我认为check_is_fittedinternal method。大多数算法会在其预测方法中调用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_')          ║
╚════════════════╩════════════════════════════════════════════╝

等等。因此,一般而言,我建议调用model.predict()并让特定算法处理检查其是否适合的最佳方法。

关于python - 测试是否安装了sklearn模型的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39884009/

10-16 07:44