使用 .set_params() 函数进行线性回归

cor*_*ght 5 python machine-learning linear-regression scikit-learn hyperparameters

我最近开始研究线性回归机器学习。我使用LinearRegression( lr) 来预测一些值。事实上,我的预测很糟糕,我被要求更改超参数以获得更好的结果。

我使用以下命令来获取超参数:

lr.get_params().keys() 
lr.get_params()
Run Code Online (Sandbox Code Playgroud)

并获得以下内容:

 'copy_X': True,
 'fit_intercept': True,
 'n_jobs': None,
 'normalize': False,
 'positive': False}
Run Code Online (Sandbox Code Playgroud)

dict_keys(['copy_X', 'fit_intercept', 'n_jobs', 'normalize', 'positive'])
Run Code Online (Sandbox Code Playgroud)

现在,这就是问题开始出现的地方。我试图找到使用该.set_params()函数的正确语法,但每个答案似乎都超出了我的理解范围。

我尝试分配一个位置参数,因为命令如lr.set_params('normalize'==True)返回

TypeError: set_params() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)

lr.set_params(some_params = {'normalize'})返回

ValueError (`ValueError: Invalid parameter some_params for estimator LinearRegression(). Check the list of available parameters with estimator.get_params().keys().
Run Code Online (Sandbox Code Playgroud)

有人可以简单解释一下这个函数是如何工作的吗?

Fla*_*ino 3

正确的语法是set_params(**params)whereparams是包含估计器参数的字典,请参阅scikit-learn 文档

from sklearn.linear_model import LinearRegression

reg = LinearRegression()

reg.get_params()
# {'copy_X': True,
#  'fit_intercept': True,
#  'n_jobs': None,
#  'normalize': False,
#  'positive': False}

reg.set_params(**{
    'copy_X': False,
    'fit_intercept': False,
    'n_jobs': -1,
    'normalize': True,
    'positive': True
})

reg.get_params()
# {'copy_X': False,
#  'fit_intercept': False,
#  'n_jobs': -1,
#  'normalize': True,
#  'positive': True}
Run Code Online (Sandbox Code Playgroud)