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:如何检查系数的显着性

如何检查您的系统中是不是安装了 scikit learn? [复制]

算法导论第四版学习——习题二Deques and Randomized Queues

Opencv2.4.9源码分析——Extremely randomized trees

PrincetonAlgorithm I - Assignment2 Deques and Randomized Queues

优化算法Greedy Randomized Adaptive Search算法 超详细解析,附代码实现TSP问题求解