首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下标指数必须是实际正整数,也可以是svmclassify matlab中的逻辑值。

下标指数必须是实际正整数,也可以是svmclassify matlab中的逻辑值。
EN

Stack Overflow用户
提问于 2015-11-12 15:58:06
回答 1查看 456关注 0票数 5

我正在使用matlab的svm分类函数。我的训练和测试数据有以下几个维度:

代码语言:javascript
复制
>> size(TrainV)

ans =  

   99192         705

>> size(TestV)

ans =

246   705

我有一个功能,训练一对一的分类与10个类别(45个二进制分类器)。可以通过调用以下函数来训练该模型:

代码语言:javascript
复制
Models = SVM_multitrain (TrainV(:, 2:end), TrainV(:, 1), 10); 

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

代码语言:javascript
复制
> 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: []

问题是当我调用函数对一个特征向量进行分类时,例如,对于第一个二进制分类器。

代码语言:javascript
复制
>>         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),:);

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-18 06:54:46

此错误的可能原因是将复杂数据传递给svmclassifysvmclassify只接受真实的特征向量。实际上,将复杂数据传递给svmclassify会导致outclass是复杂的和复杂的值,因此不能像错误消息所声明的那样用于索引。

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

事实上,绝大多数机器学习模型都是基于特征向量为实的假设。人工神经网络,回归树,svm等,虽然在某些情况下可能有一些扩展。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33675759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档