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

Posted

技术标签:

【中文标题】python sklearn 获取模型的可用超参数列表【英文标题】:python sklearn get list of available hyper parameters for model 【发布时间】:2019-07-01 12:26:35 【问题描述】:

我正在使用带有 sklearn 的 python,并且想获取模型的可用超参数列表,如何做到这一点?谢谢

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

model.get_params() 

我明白了

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

【问题讨论】:

【参考方案1】:

应该这样做: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

【讨论】:

这仅适用于初始化模型,我需要知道初始化模型时可以使用的可用参数是什么,因此在此阶段未初始化。 我明白了,在这种情况下您有几个选择:1. sklearn 文档,但我猜您想以编程方式执行此操作 2. 您可以在未初始化的模型上调用 get_params(),然后使用set_params() 初始化模型。请参阅我编辑的答案,因为代码在 cmets 中的格式不正确。【参考方案2】:

截至 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()

【讨论】:

以上是关于python sklearn 获取模型的可用超参数列表的主要内容,如果未能解决你的问题,请参考以下文章

sklearn参数优化方法

《转》sklearn参数优化方法

python中算法(sklearn)的最优超参数寻优:skopt贝叶斯搜索

机器学习-kNN-寻找最好的超参数

随机搜索获取参数未实现

python 超参数 自动搜索模块GridSearchCV(收藏)