我正在使用Matlab的统计和机器学习工具箱来创建决策树,集合,Knn模型等 . 我想将我的数据分成训练/测试分区,然后使用训练数据进行模型训练和交叉验证(基本上是分裂将训练数据转换为训练和验证数据),同时保留我的测试数据以获取错误指标 . 重要的是,不使用测试数据以任何方式训练模型 . 对于我的决策树,我有类似下面的代码:
chess = csvread(filename);
predictors = chess(:,1:6);
class = chess(:,7);
cvpart = cvpartition(class,'holdout', 0.3);
Xtrain = predictors(training(cvpart),:);
Ytrain = class(training(cvpart),:);
Xtest = predictors(test(cvpart),:);
Ytest = class(test(cvpart),:);
% Fit the decision tree
tree = fitctree(Xtrain, Ytrain, 'CrossVal', 'on');
% Error Metrics
testingLoss = loss(tree,Xtest,Ytest,'Subtrees','all'); % Testing
resubcost = resubLoss(tree,'Subtrees','all'); % Training
[cost,secost,ntermnodes,bestlevel] = cvloss(tree,'Subtrees','all'); % Cross Val
但是,这会回来
Undefined function 'loss' for input arguments of
type 'classreg.learning.partition.ClassificationPartitionedModel'.
当试图找到测试错误 . 我已尝试使用不同类型的分类算法的类似方法的几种组合,但由于分区数据而不断回到无法将测试数据应用于交叉验证模型 . 我如何将测试数据应用于交叉验证模型?