与模式识别中的图相关的问题(第1部分)

时间:2012-04-02 20:08:56

标签: matlab pattern-recognition

我无法关注crossval()& MATLAB文档crossval()中给出的cvpartition()函数。参数中包含哪些内容以及如何比较不同分类器的性能和准确性。如果在这里提供更简单的版本,将有义务。

1 个答案:

答案 0 :(得分:2)

让我们从CROSSVAL文档开始实例2。

load('fisheriris');
y = species;
X = meas;

这里我们将示例mat-file和赋值变量的数据加载到Xymeas 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

还有问题吗?