使用fit函数时,报错KeyError: ‘squared_error‘

关键代码

param_grid_simple = {"criterion": ["squared_error","poisson"]
                     , 'n_estimators': [*range(20,100,5)]
                     , 'max_depth': [*range(10,25,2)]
                     , "max_features": ["log2","sqrt",16,32,64,"auto"]
                     , "min_impurity_decrease": [*np.arange(0,5,10)]
                    }
search = GridSearchCV(estimator=reg
                     ,param_grid=param_grid_simple
                     ,scoring = "neg_mean_squared_error"
                     ,verbose = True
                     ,cv = cv
                     ,n_jobs=-1)
search.fit(X,y)                  

报错信息

~/anaconda3/lib/python3.8/site-packages/sklearn/ensemble/_forest.py in _parallel_build_trees(tree, forest, X, y, sample_weight, tree_idx, n_trees, verbose, class_weight, n_samples_bootstrap)
    166                                                         indices=indices)
    167 
--> 168         tree.fit(X, y, sample_weight=curr_sample_weight, check_input=False)
    169     else:
    170         tree.fit(X, y, sample_weight=sample_weight, check_input=False)

~/anaconda3/lib/python3.8/site-packages/sklearn/tree/_classes.py in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
   1240         """
   1241 
-> 1242         super().fit(
   1243             X, y,
   1244             sample_weight=sample_weight,

~/anaconda3/lib/python3.8/site-packages/sklearn/tree/_classes.py in fit(self, X, y, sample_weight, check_input, X_idx_sorted)
    334                                                          self.n_classes_)
    335             else:
--> 336                 criterion = CRITERIA_REG[self.criterion](self.n_outputs_,
    337                                                          n_samples)
    338 

KeyError: 'squared_error'

分析

当访问不在dict中的键时会引发KeyError错误,则 criterion 的参数 squared_error 可能不存在。由于已知有该参数值,推测可能是自己 sklearn版本问题。查询自己的 sklearn 版本为 0.23 ,而官方早已到 1.0 以上了。

解决

查询 sklearn 的官方文档看到

  • scikit-learn 1.1.dev0
    RandomForestRegressor的 criterion 参数

  • scikit-learn 0.23.2
    RandomForestRegressor的 criterion 参数

可以看到不同版本的criterion参数的值不同,可以考虑

  • 将该值改为对应版本的值,如 ‘mse’。
  • 或是直接更改 sklearn 版本。

由于官方文档中说:“mse”在 v1.0 中已弃用,并将在 1.2 版中删除,"squared_error"是等价的。因此采用了升级 sklearn 的方式。

pip install scikit-learn==1.0.1 -i  https://pypi.tuna.tsinghua.edu.cn/simple

相关文章

  1. Python KeyError – 常用解决办法
  2. sklearn.ensemble.RandomForestRegressor
  3. 指路各个版本sklearn文档
  4. jupyter 更新sklearn到最新版本
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值