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 类信息。
我有一些使用 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 类信息。