【问题标题】:Scikit: how to check if an object is a RandomizedSearchCV or a RandomForestClassifier?Scikit:如何检查对象是 RandomizedSearchCV 还是 RandomForestClassifier?
【发布时间】:2015-12-10 16:58:46
【问题描述】:
我有一些使用Grid Search 创建的分类器,还有一些直接使用Random Forests 创建的分类器。
随机森林返回类型sklearn.ensemble.forest.RandomForestClassifier,使用gridSearch 创建的随机森林返回类型sklearn.grid_search.RandomizedSearchCV。
我正在尝试以编程方式检查估算器的类型(以确定是否需要在 feature importances 上使用 best_estimator_),但似乎找不到这样做的好方法。
if type(estimator) == 'sklearn.grid_search.RandomizedSearchCV' 是我的第一个猜测,但显然是错误的。
【问题讨论】:
标签:
python-2.7
types
scikit-learn
random-forest
grid-search
【解决方案1】:
type() 函数不返回类信息,它返回一个type 对象。因此,将相等性与这样的类信息进行比较是行不通的。
您需要做的是使用 isinstance(object, classinfo) 来测试估算器的类型。
如果类型与 classinfo 匹配,此函数返回 True,否则返回 False。
假设您创建了一个类型为
的估算器
sklearn.ensemble.forest.RandomForestClassifier
然后
isinstance(估计器,sklearn.ensemble.forest.RandomForestClassifier)
将返回 True,而
isinstance(estimator,sklearn.grid_search.RandomizedSearchCV)
将返回 False。
然后您可以在 if 语句等测试中使用该结果。
记得
导入 sklearn
访问您可能需要测试的所有 scikit-learn 类信息。