【问题标题】:Issues related to plots in pattern recognition(Part1)模式识别中与绘图相关的问题(上)
【发布时间】:2012-04-16 12:11:55
【问题描述】:

我无法遵循 MATLAB 文档 crossval() 中给出的 crossval()cvpartition() 函数。参数中的内容以及它如何帮助比较不同分类器的性能和准确性。如果这里提供了一个更简单的版本,我们将不得不这样做。

【问题讨论】:

  • 您在问 3 个非常独立的问题。请理解本站不仅是为了帮助您,也是为了帮助其他人日后遇到类似问题的时候。因此,问题应该组织得很好,并且尽可能具有描述性。我建议将您的问题分成 3 个不同的问题。您不必为问题付费!您将有 3 倍的机会提升您的声誉。
  • 已更正问题,谢谢。请看一看。

标签: matlab pattern-recognition


【解决方案1】:

让我们处理CROSSVAL 文档中的示例 2。

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

在这里,我们从示例 mat 文件加载数据并将变量分配给 Xymeas amtrix 包含鸢尾花的不同测量值,species 是鸢尾花的树类,我们试图用数据预测。

交叉验证用于在同一数据集上多次训练分类器。基本上在每次迭代中,您将数据集拆分为训练和测试数据。比例由k倍决定。例如,如果k 为 10,则 90% 的数据将用于训练,其余 10% - 用于测试,您将进行 10 次迭代。这是由CVPARTITION 函数完成的。

cp = cvpartition(y,'k',10); % Stratified cross-validation

如果您输入cp. 并按Tab,您可以探索cp 对象。您将看到不同的属性和方法。例如,find(cp.test(1)) 将显示第一次迭代的测试集的索引。

下一步是准备预测函数。这可能是您遇到主要问题的地方。该语句使用匿名函数创建函数句柄。 @(XTRAIN, ytrain,XTEST) 部分声明此函数有 3 个输入参数。下一部分(classify(XTEST,XTRAIN,ytrain)) 定义了函数,它使用已知的ytrain 类获取训练数据XTRAIN,并使用生成的模型预测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

还有问题吗?

【讨论】:

  • 很好的解释 :) 开发人员很难在 matlab 帮助中做出一个很好解释的示例 x)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2019-11-04
  • 1970-01-01
相关资源
最近更新 更多