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



我正在将python与sklearn一起使用,并希望获得模型的可用超参数列表,该怎么做?谢谢

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

model.get_params() 

我明白这个

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

这应该可以做到: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

截至 2021 年 5 月
(基于须藤的回答(

# 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()

如果您碰巧正在查看 CatBoost,请尝试.get_all_params()而不是 get_params()

estimator._get_param_names()将打印出给定估计器(模型(的所有可用超参数。

from sklearn.svm import SVR
from sklearn.ensemble import RandomForestRegressor
SVR._get_param_names()
['C',
 'cache_size',
 'coef0',
 'degree',
 'epsilon',
 'gamma',
 'kernel',
 'max_iter',
 'shrinking',
 'tol',
 'verbose']
RandomForestRegressor._get_param_names()
['bootstrap',
 'ccp_alpha',
 'criterion',
 'max_depth',
 'max_features',
 'max_leaf_nodes',
 'max_samples',
 'min_impurity_decrease',
 'min_samples_leaf',
 'min_samples_split',
 'min_weight_fraction_leaf',
 'n_estimators',
 'n_jobs',
 'oob_score',
 'random_state',
 'verbose',
 'warm_start']

相关内容

  • 没有找到相关文章

最新更新