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
模型来查看可用的构造函数参数,从而查看超参数。您可能需要过滤掉一些并非特定于模型的参数,例如self
和n_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 获取模型的可用超参数列表的主要内容,如果未能解决你的问题,请参考以下文章