我无法关注crossval()
& MATLAB文档crossval()中给出的cvpartition()
函数。参数中包含哪些内容以及如何比较不同分类器的性能和准确性。如果在这里提供更简单的版本,将有义务。
答案 0 :(得分:2)
让我们从CROSSVAL文档开始实例2。
load('fisheriris');
y = species;
X = meas;
这里我们将示例mat-file和赋值变量的数据加载到X
和y
。 meas
amtrix包含虹膜花的不同测量值,species
是虹膜的树类,我们试图用数据预测。
交叉验证用于在同一数据集上多次训练分类器。基本上在每次迭代时,您都将数据集拆分为训练和测试数据。该比例由k倍确定。例如,如果k
为10,则90%的数据将用于培训,其余10% - 用于测试,您将进行10次迭代。这是由CVPARTITION函数完成的。
cp = cvpartition(y,'k',10); % Stratified cross-validation
如果您输入cp
并按标签,则可以浏览cp.
对象。您将看到不同的属性和方法。例如,find(cp.test(1))
将显示第一次迭代的测试集的索引。
下一步是准备预测功能。这可能是您遇到主要问题的地方。此语句使用匿名函数创建函数句柄。 @(XTRAIN, ytrain,XTEST)
部分声明此函数有3个输入参数。下一部分(classify(XTEST,XTRAIN,ytrain))
定义了该函数,该函数获取具有已知XTRAIN
类的训练数据ytrain
,并使用生成的模型预测XTEST
数据的类。 (这些数据来自cp
,还记得吗?)
classf = @(XTRAIN, ytrain,XTEST)(classify(XTEST,XTRAIN,ytrain));
然后我们运行CROSSVAL函数来估计传递完整数据集,预测函数句柄和分区对象cp
的错误分类率(mcr)。
cvMCR = crossval('mcr',X,y,'predfun',classf,'partition',cp)
cvMCR =
0.0200
还有问题吗?