【发布时间】:2021-11-23 06:25:52
【问题描述】:
使用以下代码:
from sklearn.utils import all_estimators
from sklearn import base
# Print all regressors
estimators = all_estimators(type_filter="regressor")
for name in estimators:
print(name[0], name[1])
...呈现此响应:
ARDRegression <class 'sklearn.linear_model._bayes.ARDRegression'>
AdaBoostRegressor <class 'sklearn.ensemble._weight_boosting.AdaBoostRegressor'>
BaggingRegressor <class 'sklearn.ensemble._bagging.BaggingRegressor'>
BayesianRidge <class 'sklearn.linear_model._bayes.BayesianRidge'>
CCA <class 'sklearn.cross_decomposition._pls.CCA'>
DecisionTreeRegressor <class 'sklearn.tree._classes.DecisionTreeRegressor'>
DummyRegressor <class 'sklearn.dummy.DummyRegressor'>
ElasticNet <class 'sklearn.linear_model._coordinate_descent.ElasticNet'>
ElasticNetCV <class 'sklearn.linear_model._coordinate_descent.ElasticNetCV'>
ExtraTreeRegressor <class 'sklearn.tree._classes.ExtraTreeRegressor'>
ExtraTreesRegressor <class 'sklearn.ensemble._forest.ExtraTreesRegressor'>
GammaRegressor <class 'sklearn.linear_model._glm.glm.GammaRegressor'>
GaussianProcessRegressor <class 'sklearn.gaussian_process._gpr.GaussianProcessRegressor'>
...
那么import 怎么能在<> 的类对象中呢?所以我最终得到了类似(伪)的东西:
# Print/import all regressors
estimators = all_estimators(type_filter="regressor")
for name in estimators:
print(name[0], name[1])
import name[1]
...但是这当然行不通。谢谢!
更新 然后我想要做的是使用导入的类。尝试类似:
for name in estimators:
globals()[name[0]] = name[1]
params = name[0].get_params()
print(params)
...不起作用。
【问题讨论】:
-
为什么要导入它——它只是将类对象放在你的模块命名空间中?您已经在
name[1]中获得了类对象。 -
假设你通过magic导入了ARDRegression,你通常会怎么称呼它?
params = ARDRegression().get_params()?知道了这一点,我们可以通过中间字典来解决问题。
标签: python python-3.x scikit-learn