针对特定案例开始使用LibSVM

时间:2017-03-01 20:48:29

标签: neural-network classification libsvm

我已经阅读了很多关于LibSVM库的内容,但我想请教您在我的特定情况下的一些建议。问题是我有一些胃的3D医学图像(DCE-MRI)。我的目标是进行肾脏的分割,并找到它的三个部分。因此,我需要训练一个分类器 - 我将使用SVM和神经网络

特征向量: 可用的是像素(体素)亮度值(我猜值范围是[0; 511])。总共有71帧,每帧一帧。因此,每个体素的关键特征是在检查时间内体素亮度/强度如何变化。在我的情况下,肾脏的每个部分都有不同的图表(参见下面的示例),因此分类器将使用体素亮度随时间变化的方式。 Simple visualisation of the problem

训练集: 每个训练集是一个体素的强度值的矢量(74个数字)。下面给出一个例子: [22 29 21 7 19 12 23 25 33 28 25 5 21 18 27 21 11 11 26 12 12 31 15 15 12 29 17 34 30 11 12 24 35 28 27 26 29 22 15 23 24 14 14 37 241 313 350 349 382 402 333 344 332 366 339 383 383 379 394 398 402 357 346 379 365 376 366 365 360 363 376 383 389 385]

摘要和问题: 我有很多训练集,包括来自[0; 511]。我有3组体素,它们具有一个特征 - 亮度以类似的方式变化。 我想要获得的是一个分类器,在获得一个带有74个数字的体素向量之后,将评估体素是属于这三个组中的一个,还是属于这三个组中的一个。

问题:如何从LibSVM开始,有什么建议吗?据我所知,我应该将输入值转换为[0; 1]或[-1; 1]。我准备了许多训练集,属于这3组中的一组。我会很感激任何建议,因为我是一个新手,我只是需要一些技巧才能开始。

1 个答案:

答案 0 :(得分:0)

你可以像这样训练和使用你的模型:

model=svmtrain(train_label,train_feature,'-c 1 -g 0.07 -h 0'); 
% the parameters can be modified
[label, accuracy, probablity]=svmpredict(test_label,test_feaure,model);

train_label必须是一个向量,如果有两种以上的输入(0/1),它将自动成为一个nSVM。如果您有3个类,则可以使用{1,2,3}标记它们。它的长度等于样本数。

该功能不受限制。它可以是你想要的。

但是,您最好对它们进行预处理,以使结果更好。例如,您可以将范围[0:511]更改为范围[0:1]或减去特征的平均值。

请注意,测试集数据应该以相同的方式进行预处理。

希望这会对你有帮助!