如何通过Matlab中的PartitionedEnsemble模型预测新数据(测试集)的标签?

时间:2015-06-16 05:32:07

标签: matlab classification cross-validation ensemble-learning

我通过Matlab 2014a中的函数 fitensemble()训练了一个集合模型(RUSBoost)用于二元分类问题。通过函数 fitensemble()的输入参数“kfold”对此函数进行10次交叉验证。

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

1 个答案:

答案 0 :(得分:1)

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

编辑:

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