1

我的项目是在 MATLAB 中使用 SVM 分类器进行急性中风分类。

下面的截图显示了使用被称为 svm 分类器训练数据的 glcm 对急性中风(21 名患者)和正常脑(6 名患者)进行的 13 个特征提取。

特征

以下屏幕截图显示了Y一组训练数据。

是

这是我正在使用的代码,它显示错误。

Load Trainset.mat
data = new_var;
group = label;
SVMStruct = svmtrain(data, group, 'kernel_function', 'linear');
newClasses = svmclassify(SVMStruct, texturedata, 'showplot', true);
%To plot classification graphs, SVM can take only two dimensional data
data1 = [new_var(:, 1), new_var(:, 2)];
newfeat = [texturedata(:, 1), texturedata(:, 2)];
SVMStruct_new = 
svmtrain(data, group, 'kernel_function', 'linear', 'showplot', true);
%species_Linear_new = svmclassify(SVMStruct_new, newfeat, 'showplot', true);

警告:Y 包含未出现在 Y 元素中的分类级别。出于训练分类器的目的,这些级别将被忽略。在 277 的 svmtrain

使用 svmtrain 时出错(第 335 行) Y 必须恰好包含两个用于方法“SMO”的组。

我认为这是因为该行被忽略的价值0和正常大脑。NAN所以我的问题是:我应该怎么做才能包含该行,或者它绝对不适用于此代码?

4

1 回答 1

0

您的数据集不是一个好的数据集。如果这是一个准确的数据集,那么您根本不需要机器学习。您可以只使用一项功能并通过检查它是否非零来预测是急性中风还是健康。(即如果为零则为健康,如果非零则为急性中风)。

我猜您没有健康患者的数据,因此您只是在没有的数据中添加零。那没有意义。

是的,你的零和 Nan 和 Inf 是 SVM 学习的问题。但更大的问题是,即使你对它们进行了预处理,由于我上面提到的原因,数据仍然没有用。所以尝试先收集更好的数据,然后重新开始。

如果您可以发布一张正面和负面的图片(健康的和不健康的),我可以告诉您哪些功能可能是好的开始。正如我所见,GLCM 不适用于您的问题/您计算 GLCM 的方式可能不正确。

希望这可以帮助

于 2017-04-23T03:55:53.630 回答