我正在将python和sklearn一起使用,并想获取模型的可用超级参数列表,该怎么做?谢谢
当我尝试使用
时,这需要在初始化模型之前发生model.get_params()
我明白了
TypeError:get_params()缺少1个必需的位置参数:“ self”
答案 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
模型来查看可用的构造函数参数,以及超参数。您可能需要过滤掉一些并非特定于模型的参数,例如self
和n_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()