Scikit:如何检查对象是 RandomizedSearchCV 还是 RandomForestClassifier?
Posted
技术标签:
【中文标题】Scikit:如何检查对象是 RandomizedSearchCV 还是 RandomForestClassifier?【英文标题】:Scikit: how to check if an object is a RandomizedSearchCV or a 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'
是我的第一个猜测,但显然是错误的。
【问题讨论】:
【参考方案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 类信息。
【讨论】:
以上是关于Scikit:如何检查对象是 RandomizedSearchCV 还是 RandomForestClassifier?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查您的系统中是不是安装了 scikit learn? [复制]
算法导论第四版学习——习题二Deques and Randomized Queues
Opencv2.4.9源码分析——Extremely randomized trees
PrincetonAlgorithm I - Assignment2 Deques and Randomized Queues