【问题标题】:matlab error with LDA classificationLDA分类的matlab错误
【发布时间】:2014-05-20 12:49:15
【问题描述】:

我想使用 LDA(线性判别分析)分类器对我的数据进行分类。我的测试数据大小是:

1    12   240    64

我的火车数据大小是:

85    12   240    64  

我的标签尺寸是:

1 85  

为此,我使用了这样的分类 MATLAB 代码:

class = classify(Test_data, Train_data, label, 'linear');

但它给了我错误:

GROUP 的长度必须等于 TRAINING 中的行数。

我不知道为什么给我这个错误,因为如您所见,我的 TRAINING 数据行号是 85,与我的 label(GROUP) 长度相同。谁能告诉我我做错了什么?

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于特定于 Matlab 错误消息的原因;这似乎是 Matlab 语法问题,而不是统计问题。
  • @ttnphns LDA 或线性判别分析和相关的 Fisher 线性判别是用于统计、模式识别和机器学习的方法,用于找到表征或分离两类或更多类对象或事件。

标签: classification matlab


【解决方案1】:

LDA 适用于行;请注意文档“培训和组必须具有相同的行数”。

您的标签当前在列中指定。以下将修复您的错误:

class = classify(Test_data,Train_data,label','linear');

注意标签后的 ' 转置成行。

【讨论】:

  • 谢谢@Alex。它可以工作,但现在它给了我另一个错误,例如“SAMPLE 和 TRAINING 必须具有相同数量的列。”但我确信它们都有相同的列数,以及为什么如果我写标签'或标签那么重要,因为我想什么问题是标签的长度而不是行数或列数。我无法理解。
  • 没问题!一般来说,我认为您需要更仔细地查看变量的大小并了解列向量和行向量之间的区别。行号和列号绝对很重要!见这里:mathworks.com/help/stats/classify.htmlclass=分类(sample,training,group) 一般来说,大小应该是:size(sample) == (num_samples, num_variables), size(training) == (num_samples, num_variables), size(training ) == (num_samples, 1)。目前您的矩阵太大(4d 与 2d),因此请仔细考虑您的数据结构。祝你好运!
  • 谢谢@Alex。我发现 matlab 只支持 2d 数据,所以我将所有 3d 和 4d 数据转换为 2d 矩阵,在你的帮助下我终于解决了我的问题。
猜你喜欢
  • 2014-07-29
  • 2015-04-13
  • 2017-03-29
  • 2017-04-20
  • 2018-05-20
  • 1970-01-01
  • 2021-02-12
  • 2013-06-07
  • 2013-06-07
相关资源
最近更新 更多