【问题标题】:Manual k-fold cross validation for Random Forest随机森林的手动 k 折交叉验证
【发布时间】:2021-06-05 19:56:47
【问题描述】:

我正在使用随机森林分类器,我想执行 k 折交叉验证。 我的数据集已经分成 10 个不同的子集,所以我想用它们来做 k 折交叉验证,而不是使用随机分割数据集的自动函数。 在 Python 中可以吗?

随机森林没有 partial_fit() 方法,所以我无法进行增量拟合。

【问题讨论】:

  • 是的,这是可能的。但是,有无数种方法可以做到这一点,这使得在合理范围内无法回答这个问题。
  • 你的问题是关于 k-fold 还是 partial_fit 算法
  • 你可以根据时间戳折叠
  • partial_fit() 或其他拆分函数在这里有什么作用?您在运行for 循环时是否有任何特定困难,并且在每次迭代中都适合(连接的)9 个子集,同时测试剩余的子集?如果是,请发布您迄今为止尝试过的内容以及遇到的具体问题。否则,正如@BartoszKP 已经注意到的那样,您的问题的答案只是“是的,有可能”(它与随机森林或任何其他特定算法无关) .

标签: python random-forest cross-validation k-fold


【解决方案1】:

尝试 kf = StratifiedKFold(n_splits=3, shuffle=True, random_state=123) 以均匀拆分您的数据

尝试 kf=TimeSeriesSpit(n_splits=5) 按时间戳拆分 尝试 kf = KFold(n_splits=5, random_state=123, shuffle=True) 在拆分之前对训练数据进行洗牌。

for train_index, test_index in kf.split(bryant_shots):
     cv_train, cv_test = df.iloc[train_index], df.iloc[test_index]

     #fit the classifier

您还可以通过分组或类别来制定策略,并使用 kfold 获得这些分组的平均平均值。它对于理解您的数据非常强大。

【讨论】:

  • k-fold 的目的是验证您的模型没有过度拟合您的数据并且它不是偏差。通过检查系数运行过拟合和偏差测试。如果您需要帮助,请告诉我
【解决方案2】:

最好加入所有子集,然后将它们拆分为 k-fold,但这是另一种方式:

for in range(10):
   model = what_model_you_want
   model.fit(dataset.drop(i_th_subset))
   prediction = model.predict(i_th_subset)
   test_result = compute_accuracy(i_th_subset.target, prediction)

【讨论】:

    猜你喜欢
    • 2021-06-17
    • 2019-08-19
    • 2018-09-03
    • 2014-04-16
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 2021-07-30
    相关资源
    最近更新 更多