我的项目是使用MATLAB中的SVM分类器进行急性脑卒中分类。
下面的屏幕截图显示了使用glcm对急性卒中(21例患者)和正常脑(6例患者)进行特征提取,这被称为svm分类器的训练数据。
以下屏幕截图显示了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元素中的分类级别。为了训练分类器,将忽略这些级别。 在svmtrain 277
使用svmtrain时出错(第335行) Y必须包含两个方法'SMO'组。
我认为这是因为正常大脑的值0
和NAN
被忽略的行。所以我的问题是:我该怎么做才能包含该行,或者它绝对不能用于此代码?
答案 0 :(得分:0)
您的数据集不是很好。如果这是一个准确的数据集,您根本不需要机器学习。您只需使用一个功能,并通过检查是否为非零来预测急性卒中或健康状况。 (即健康,如果为零,急性中风,如果非零)。
我猜您没有健康患者的数据,因此您只是在您没有的数据中添加零。这没有意义。
是的,您的零和Nan和Inf是SVM需要学习的问题。但更大的问题是,即使你对它们进行预处理,由于我上面提到的原因,数据仍然无用。因此,请先尝试收集更好的数据,然后重新开始。
如果您可以发布一个正面和负面图像(健康而不健康),我可以告诉您哪些功能可能是好的开始。正如我看到GLCM不适合你的问题/你计算GLCM的方式可能不对。
希望这有帮助