Scikit:如何检查对象是 RandomizedSearchCV 还是 RandomForestClassifier?

Scikit: how to check if an object is a RandomizedSearchCV or a RandomForestClassifier?

我有一些使用 Grid Search, and others that have been created directly as Random Forests 创建的分类器。

随机森林 return 类型 sklearn.ensemble.forest.RandomForestClassifier,使用 gridSearch return 创建的随机森林类型 sklearn.grid_search.RandomizedSearchCV

我正在尝试以编程方式检查估算器的类型(以便决定是否需要在 feature importances 上使用 best_estimator_),但似乎找不到一个好的方法来这样做。

if type(estimator) == 'sklearn.grid_search.RandomizedSearchCV' 是我的第一个猜测,但显然是错误的。

type() 函数不是 return 类信息,它 return 是一个 type 对象 .因此,将相等性与这样的类信息进行比较是行不通的。

你需要做的是使用 isinstance(object, classinfo) 来测试你的估计器的类型。

此函数return如果类型与类信息匹配则为真,否则为假。

假设您创建了一个

类型的估算器

sklearn.ensemble.forest.RandomForestClassifier

然后

isinstance(estimator, sklearn.ensemble.forest.RandomForestClassifier)

会 return 正确,而

isinstance(estimator,sklearn.grid_search.RandomizedSearchCV)

会 return 错误。

然后您可以在 if 语句等测试中使用该结果。

记得

import sklearn

访问您可能需要测试的所有 scikit-learn 类信息。