MATLAB:使用 fitctree 训练的分类器对新数据进行标签预测

Posted

技术标签:

【中文标题】MATLAB:使用 fitctree 训练的分类器对新数据进行标签预测【英文标题】:MATLAB: label prediction on new data using fitctree trained classifier 【发布时间】:2018-07-27 13:48:56 【问题描述】:

我在 MATLAB 2015b 中使用 fitctree 构建了一个简单的分类树。我现在想开始使用它对新数据(tabletest)进行预测。 'Predict' 给了我一个错误,我不确定如何在新数据上使用 kfoldPredict。

代码:

  predict(Mdl10feat,tabletest)

错误:

Undefined function 'predict' for input arguments of type
'clas-s-reg.learning.partition.ClassificationPartitionedModel'.

分类器:

Mdl10feat = 

  clas-s-reg.learning.partition.ClassificationPartitionedModel
    CrossValidatedModel: 'Tree'
         PredictorNames: 'fermin'  'MAJ'  'SOL'  'ECC'  'ORI'  'W'  'H'  'CIRC1'  'EQU'  'CONT'
           ResponseName: 'classROI'
        NumObservations: 376810
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: 'Hit'  'Miss'
         ScoreTransform: 'none'

输入:

tabletest = 

    fermin     MAJ        SOL        ECC       ORI        W         H       CIRC1      EQU      CONT
    ______    ______    _______    _______    ______    ______    ______    ______    ______    ____

    29.748    46.342    0.98621    0.76677    87.506    27.307    43.691    1.0426    36.847    149 

我在这里做错了什么?

【问题讨论】:

【参考方案1】:

fitctree 的文档,特别是 output argument tree,说明如下:

分类树,作为分类树对象返回。

使用'CrossVal''KFold''Holdout''Leaveout''CVPartition' 选项会生成ClassificationPartitionedModel 类树。 您不能使用分区树进行预测,因此这种树没有predict 方法。相反,请使用 kfoldPredict 来预测未用于训练的观察的响应。

否则tree属于ClassificationTree类,你可以使用predict方法进行预测。

由于您的输出是ClassificationPartitionedModel 类型,因此您必须使用kfoldPredict 方法。

请注意我上面加粗的语句:分区树不能用于预测新数据。这是因为提供给fitctree 的数据集用于 训练和测试/验证。从上面的模型输出中可以看出,您使用的 'KFold' 值为 10。这意味着您的数据首先被划分为 10 个集合,然后每个集合都用作在其他 9 个模型上训练的模型的验证集。 kfoldPredict 方法为您提供分类结果。

如果你想使用所有数据来训练模型,然后在新数据上使用predict,你必须避免使用'CrossVal''KFold''Holdout''Leaveout'或@调用fitctree时的987654350@选项。

【讨论】:

2015b好像没有kfoldPredict,必须下载2017b。我看到了如何从训练数据中检查标签,但我真的不知道如何使用它来获取新数据的类标签。如何使用 kfoldPredict 获取“tabletest”示例的标签?

以上是关于MATLAB:使用 fitctree 训练的分类器对新数据进行标签预测的主要内容,如果未能解决你的问题,请参考以下文章

matlab'fitctree'的CART算法考虑属性顺序为啥?

matlab'fitctree'的CART算法考虑属性顺序为啥?

深度学习matlab图像分类,手把手教程系列

在 MATLAB 分类学习器中,导出模型后是不是可以提取该模型的参数?

使用交叉验证的 KNN 分类器

Python scikit-learn:导出经过训练的分类器