在SVMClassifMatlab中,下标索引必须是实正整数或逻辑数

在SVMClassifMatlab中,下标索引必须是实正整数或逻辑数,matlab,svm,Matlab,Svm,我正在使用matlab的svm分类函数。我的列车和测试数据具有以下尺寸: >> size(TrainV) ans = 99192 705 >> size(TestV) ans = 246 705 我有一个函数,可以训练一个一对一的分类,包含10个类(45个二进制分类器)。可以通过调用以下函数来训练模型: Models = SVM_multitrain (TrainV(:, 2:end), TrainV(:, 1), 10);

我正在使用matlab的svm分类函数。我的列车和测试数据具有以下尺寸:

>> size(TrainV)

ans =  

   99192         705

>> size(TestV)

ans =

246   705
我有一个函数,可以训练一个一对一的分类,包含10个类(45个二进制分类器)。可以通过调用以下函数来训练模型:

Models = SVM_multitrain (TrainV(:, 2:end), TrainV(:, 1), 10); 
我正在发送特征向量(TrainV(:,2:end))和标签(TrainV(:,1)),并要求模型为45个分类器(10)训练成对组合。该功能运行正常,培训后我可以获得以下信息。例如,我将展示第3个和第45个二进制分类器的模型

> Models(3)

ans = 

      SupportVectors: [9x704 double]
               Alpha: [9x1 double]
                Bias: -2.3927 - 0.0001i
      KernelFunction: @linear_kernel
  KernelFunctionArgs: {}
          GroupNames: [20117x1 double]
SupportVectorIndices: [9x1 double]
           ScaleData: [1x1 struct]
       FigureHandles: []

>> Models(45)

ans = 

      SupportVectors: [10x704 double]
               Alpha: [10x1 double]
                Bias: -2.7245 + 0.0000i
      KernelFunction: @linear_kernel
  KernelFunctionArgs: {}
          GroupNames: [22087x1 double]
SupportVectorIndices: [10x1 double]
           ScaleData: [1x1 struct]
       FigureHandles: []
问题是当我调用函数对特征向量进行分类时,例如,对于第一个二进制分类器

>>         TestAttribBin = svmclassify(Models(1), TestV(:,2:end))
Subscript indices must either be real positive integers or logicals.

Error in svmclassify (line 140)
outclass = glevels(outclass(~unClassified),:);

有什么问题吗?当我将相同的分类过程应用于以另一种方式提取的特征向量时,不会出现此问题。

此错误的可能原因是将复杂数据传递给
svmclassify
<代码>svmclassify仅接受真实特征向量。实际上,将复杂数据传递给
svmclassify
会导致
outclass
变得复杂,并且复杂值不能用于错误消息所述的索引

一种选择可能是将向量的虚部编码到特征中,例如将特征向量的长度加倍


事实上,绝大多数机器学习模型都是基于特征向量是真实的假设,例如人工神经网络、回归树、支持向量机等,尽管在某些情况下可能会有一些扩展

你有没有办法上传一些数据来重现错误,或者是可以运行的代码?这个错误对我来说非常特殊,因此,除非有人以前遇到过完全相同的错误,否则我认为没有人能够在这方面帮助你。你能提供模型(1)的输出吗?当出现错误时,请尝试停止“dbstop if error”,您可以检查尺寸。我在这里意识到,我的降雨/测试矩阵很复杂。有什么问题吗?@mad look你应该先提供我们的意见反馈。这只是出于礼貌。错误是关于索引,而不是关于功能,对吗?@AnderBiguri问题的根源是功能很复杂,这导致了svmclassify后面的复杂索引。为什么所有的NEG?尝试将复杂的数据传递给smvclassify,你就会得到这条信息。你应该详细说明一下,因为你给出的答案似乎完全误解了这个问题。问题在于特征向量生成。有些价值观是复杂的。它们一定是真的。谢谢你的帮助。