随机森林的手动 k 折交叉验证

时间:2021-03-07 20:53:38

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

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

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

2 个答案:

答案 0 :(得分:0)

尝试 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 获得这些分组的平均值。它对于理解您的数据非常强大。

答案 1 :(得分:0)

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

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)