0

我通过Matlab 2014a 中的函数fitensemble()为二进制分类问题训练了一个集成模型 (RUSBoost) 。该函数的训练通过函数fitensemble()的输入参数“kfold”进行 10 倍交叉验证。

但是,如果我使用predict(model, Xtest) ,则无法使用此函数训练的输出模型来预测新数据的标签。我查看了 Matlab 文档,上面说我们可以使用kfoldPredict()函数来评估训练好的模型。但是我没有通过这个函数找到任何新数据的输入。此外,我发现经过交叉验证的训练模型的结构与没有交叉验证的模型不同。那么,谁能告诉我如何使用经过交叉验证训练的模型来预测新数据的标签?谢谢!

4

1 回答 1

1

kfoldPredict()需要一个RegressionPartitionedModelClassificationPartitionedEnsemble对象作为输入。这已经包含用于 kfold 交叉验证的模型和数据。
RegressionPartitionedModel对象有一个字段Trained,其中存储了用于交叉验证的训练有素的学习者。您可以使用这些学习器中的任何一个并像使用它一样使用它predict(learner, Xdata)

编辑:

如果 k 太大,则可能在一次或多次迭代中有意义的数据太少,因此该迭代的模型不太准确。k 没有通用规则,但k=10就像在 MATLAB 中一样,默认值是一个很好的起点。也许这对您来说也很有趣:https ://stats.stackexchange.com/questions/27730/choice-of-k-in-k-fold-cross-validation

于 2015-06-26T11:48:18.263 回答