【问题标题】:"FitFailedWarning: Estimator fit failed." Tuning Random Forest“FitFailedWarning:估计器拟合失败。”调整随机森林
【发布时间】:2022-01-22 11:33:06
【问题描述】:

尝试如下训练随机森林分类器:

%%time 

# defining model
Model = RandomForestClassifier(random_state=1)

# Parameter grid to pass in RandomSearchCV
param_grid = {
    "n_estimators": [200,250,300],
    "min_samples_leaf": np.arange(1, 4),
    "max_features": [np.arange(0.3, 0.6, 0.1),"sqrt"],
    "max_samples": np.arange(0.4, 0.7, 0.1)
}


#Calling RandomizedSearchCV
randomized_cv = RandomizedSearchCV(estimator=Model, param_distributions=param_grid, n_iter=50, n_jobs = -1, scoring=scorer, cv=5, random_state=1)

#Fitting parameters in RandomizedSearchCV
randomized_cv.fit(X_train_over,y_train_over) ## Complete the code to fit the model on over sampled data

print("Best parameters are {} with CV score={}:" .format(randomized_cv.best_params_,randomized_cv.best_score_))

我收到以下错误: "610: FitFailedWarning: E​​stimator fit failed。这些参数在这个训练测试分区上的分数将设置为 nan。"

知道我的代码是否有错误吗?

【问题讨论】:

    标签: python scikit-learn random-forest


    【解决方案1】:

    对于一般调试这些,请检查 randomized_cv.cv_results_ 以查看哪些参数存在该问题,以及它是每个训练测试拆分的问题还是仅一个问题。还可以考虑设置error_score='raise' 以获得完整的错误回溯,而不是屏蔽FitFailedWarning

    在这种情况下,我相信它是max_features 空间: [np.arange(0.3, 0.6, 0.1),"sqrt"] 不是一个平面列表,而是一个只有两个元素的列表,其中一个元素本身就是一个数组。搜索将尝试设置max_features=np.arange(0.3, 0.6, 0.1),这将不起作用。您可以通过例如解决此问题 list(np.arange(0.3, 0.6, 0.1)) + ["sqrt"]

    【讨论】:

      猜你喜欢
      • 2020-06-25
      • 2016-03-01
      • 2018-03-05
      • 2017-08-11
      • 1970-01-01
      • 2017-04-28
      • 2018-06-07
      • 2020-06-24
      • 2012-12-20
      相关资源
      最近更新 更多