下标索引必须是正实整数或 svmclassify matlab 中的逻辑数
Subscript indices must either be real positive integers or logicals in svmclassify matlab
我正在使用 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
变得复杂,并且复杂值不能用于错误消息所述的索引。
一个选项可能是将向量的虚部编码到特征中,例如通过将特征向量的长度加倍。
事实上,绝大多数机器学习模型都是基于特征向量是真实的假设。人工神经网络、回归树、svm 等。尽管在某些情况下可能会有一些扩展。
我正在使用 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
变得复杂,并且复杂值不能用于错误消息所述的索引。
一个选项可能是将向量的虚部编码到特征中,例如通过将特征向量的长度加倍。
事实上,绝大多数机器学习模型都是基于特征向量是真实的假设。人工神经网络、回归树、svm 等。尽管在某些情况下可能会有一些扩展。