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

时间:2019-02-07 11:35:17

标签: python python-3.x oop scikit-learn

我正在将python和sklearn一起使用,并想获取模型的可用超级参数列表,该怎么做?谢谢

当我尝试使用

时,这需要在初始化模型之前发生
model.get_params() 

我明白了

  

TypeError:get_params()缺少1个必需的位置参数:“ self”

2 个答案:

答案 0 :(得分:5)

应该这样做: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 :(得分: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)

按照 sudo 在接受的答案中的建议使用 inspect.getargspec(m.__init__).args 会生成以下警告:

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