Python 带有RandomForestRegressionor的param_网格上的GridSearchCV错误

Python 带有RandomForestRegressionor的param_网格上的GridSearchCV错误,python,python-3.x,scikit-learn,random-forest,grid-search,Python,Python 3.x,Scikit Learn,Random Forest,Grid Search,这是我在随机森林回归模型上使用GridSearchCV时遇到的错误。 这是密码 ValueError: Invalid parameter estimator for estimator RandomForestRegressor(). Check the list of available parameters with `estimator.get_params().keys()`. 从错误消息中: ValueError:估计器RandomForestRegressor()的参数估计器无效

这是我在随机森林回归模型上使用GridSearchCV时遇到的错误。 这是密码

ValueError: Invalid parameter estimator for estimator RandomForestRegressor().
Check the list of available parameters with `estimator.get_params().keys()`.

从错误消息中:

ValueError:估计器RandomForestRegressor()的参数估计器无效。 使用
estimator.get_params().keys()
检查可用参数列表

您可以看到您在
rf\u网格中错误地指定了参数

使用:

根据以下建议:

rf_grid= {"n_estimators": np.arange(10,100,10),
      "max_depth": [None,3,5,10],
      "min_samples_split": np.arange(2,20,2),
      "min_samples_leaf" : np.arange(1,20,2),
      "max_features": [0.5,1,'sqrt','auto'],
      "max_samples" : [10000]
}
dict_键(['bootstrap'、'ccp_alpha'、'criteria'、'max_depth', “最大特征”、“最大叶节点”、“最大样本”, “最小杂质减少”、“最小杂质分离”、“最小样本叶”, ‘最小样本分割’、‘最小权重分数叶’、‘n估计量’, ‘n_作业’、‘oob_分数’、‘随机状态’、‘冗长’、‘热启动’】


首先,为了了解应该如何在字典中命名参数,您可以像下面这样提前打印它们:

rfr_2.get_params().keys()
打印完所有参数后,现在可以选择要传递到网格字典中的参数

你应该做的是去掉“估计器”,你把它放在每个参数前面

此外,一旦您这样做,您将遇到另一个错误。也就是说,参数max_samples可以取1到232之间的值,您输入的值(10000)太高。 下面是修改过的代码块,应该可以使用

print(rfr_2.get_params())

所以我应该用单引号而不是双引号


这是我第一次写的,但它表明“n_估计器”是RandomForestRegressionor()的无效参数。您使用的是什么版本的scikit?使用最新的,
n_estimators
是该估计器的有效参数。它是最新的,我已经在下面发布了解决方案,如果您感兴趣,这是一个愚蠢的解决方案。您已经接受了我的答案,并在我的答案之后发布了我的解决方案。在发布之前尝试这些,
estimator.get_params().keys()
建议我在开始时添加估计器名称。您第一次尝试时,可能会出现错误,因为您将“min_sample_split”和“min_sample_leaf”替换为“min_samples_split”和“min_samples_leaf”。请尝试使用我提供的代码,因为我重新创建了整个环境,它工作了感谢花时间,是的,我以前确实遇到了一个错误,现在我返回到它,这是由于使用双引号而不是单引号。顺便说一句,我已经在下面发布了解决方案
print(rfr_2.get_params())
rf_grid= {"n_estimators": np.arange(10,100,10),
  "max_depth": [None,3,5,10],
  "min_samples_split": np.arange(2,20,2),
  "min_samples_leaf" : np.arange(1,20,2),
  "max_features": [0.5,1,'sqrt','auto'],
  "max_samples" : [100]
 %%time 
 from sklearn.model_selection import RandomizedSearchCV

 rf_grid= {'n_estimators': np.arange(10,100,10),
      'max_depth': [None,3,5,10],
      'min_samples_split': np.arange(2,20,2),
      'min_samples_leaf' : np.arange(1,20,2),
      'max_features': [0.5,1,'sqrt','auto'],
      'max_samples' : [100]
  }

  rs_model= RandomizedSearchCV(rfr,
                        param_distributions=rf_grid,
                        n_iter=100,
                        cv=5,
                        verbose= True)
  rs_model.get_params()
  }