从 RandomizedSearchCV 重现模型结果

Reproducing Model results from RandomizedSearchCV

我已经使用 RandomizedSearchCV 调整我的随机森林模型的参数,如下面的代码单元所示:

rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, 
                               n_iter = 100, cv = 3, verbose=2, random_state=42, n_jobs = -1)
rf_random.fit(X_train[rf_cols], y_train)

事实证明,rf_random 模型优于我手动训练的任何具有相同参数的模型,这些参数是使用

检索的
rf_random.best_params_

我需要重现我使用 RandomizedSearchCV 所做的准确预测,但我无法这样做,主要有两个原因:

  1. best_params_ 各不相同 运行
  2. 我无法理解 RandomizedSearchCV 如何将数据拆分为训练集和验证集,这意味着我几乎不可能训练一个行为相同的新模型。

我能做什么?我还需要哪些信息才能重现结果?或者甚至可以从 RandomizedSearchCV 重现结果,尽管我已将 random_state 固定为 42?如果我需要重现结果,我应该坚持使用 GridSearchCV 吗?

我相信您正在寻找 RandomizedSearchCVbest_estimator_ 属性,它将 return 在遗漏数据上得分最高的拟合估计量:

kf = KFold(n_splits=3, random_state=42)

rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, 
                               n_iter = 100, cv = kf, verbose=2, random_state=42, n_jobs = -1)
rf_random.fit(X_train[rf_cols], y_train)

tuned_rf = rf_random.best_estimator_
for train_index, test_index in kf.split(X_train[rf_cols], y_train):
    # use train and test indices here