python sklearn获取模型的可用超参数列表

新手上路,请多包涵

我将 python 与 sklearn 一起使用,并想获取模型的可用超参数列表,如何完成?谢谢

这需要在我初始化模型之前发生,当我尝试使用

model.get_params()

我明白了

TypeError: get_params() missing 1 required positional argument: 'self'

原文由 thebeancounter 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 979
2 个回答

应该这样做: estimator.get_params() 其中 estimator 是您的模型的名称。

要在模型上使用它,您可以执行以下操作:

 reg = RandomForestRegressor()
params = reg.get_params()
# do something...
reg.set_params(params)
reg.fit(X,  y)

编辑:

在实例化类之前获取模型超参数:

 import inspect
import sklearn

models = [sklearn.ensemble.RandomForestRegressor, sklearn.linear_model.LinearRegression]

for m in models:
    hyperparams = inspect.getargspec(m.__init__).args
    print(hyperparams) # Do something with them here

模型超参数在 sklearn 中传递给构造函数,因此我们可以使用 inspect 模型查看可用的构造函数参数,以及超参数。您可能需要过滤掉一些不特定于模型的参数,例如 selfn_jobs

原文由 sudo 发布,翻译遵循 CC BY-SA 4.0 许可协议

截至 2021 年 5 月

(基于 sudo 的回答)

 # To get the model hyperparameters before you instantiate the class
import inspect
import sklearn

models = [sklearn.linear_model.LinearRegression]
for m in models:
    hyperparams = inspect.signature(m.__init__)
    print(hyperparams)

#>>> (self, *, fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)

使用 inspect.getargspec(m.__init__).args ,正如 sudo 在接受的答案中所建议的那样,生成了以下警告:

 DeprecationWarning: inspect.getargspec() is deprecated since Python 3.0,
use inspect.signature() or inspect.getfullargspec()

原文由 rahul-ahuja 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题