如何正确使用LinearRegression的.set_params()方法调整超参数
set_params() 报错原因&正确用法
报错原因说明
- 执行
lr.set_params('normalize'==True)报错:'normalize'==True是布尔值判断表达式,运行后仅返回False,属于位置参数。但set_params()方法不接受位置参数,仅接收和模型超参数名匹配的关键字参数。 - 执行
lr.set_params(some_params = {'normalize'})报错:你传入的参数名some_params不属于LinearRegression的超参数列表,同时{'normalize'}是仅包含键的集合,没有对应参数值,不符合参数格式要求。
正确使用方式
scikit-learn所有评估器的set_params()方法用法统一,支持两种传参形式:
1. 直接传入关键字参数
单次修改1个或多个超参数时,直接写超参数名=参数值作为入参即可,超参数名不需要加引号:
# 仅修改normalize参数 lr.set_params(normalize=True) # 同时修改多个超参数 lr.set_params(normalize=True, fit_intercept=False, n_jobs=4)
2. 字典批量传参
如果参数提前存在字典中,需要用**对字典做解包后再传入:
# 构造参数字典,键为超参数名,值为要设置的参数值 param_dict = { "normalize": True, "positive": True, "n_jobs": 2 } # 解包字典后传入 lr.set_params(**param_dict)
修改完成后可调用lr.get_params(),校验参数是否设置成功。
*注:如果你使用scikit-learn 1.2及以上版本,normalize参数已被弃用,建议在数据预处理阶段使用StandardScaler或MinMaxScaler完成归一化/标准化操作。
内容的提问来源于stack exchange,提问作者corvusMidnight
相关产品推荐
相关产品推荐

