如何标准化用于从图像中提取特征的向量?

How to normalize a vector used for features extraction from an image?

我的实际矢量有 110 个元素,我将使用它们从 matlab 中的图像中提取特征,我用这个 (tb) 来简化

tb=[22.9 30.0 30.3 27.8 24.1 28.2 26.4 12.6 39.7 38.0];
normalized_V = tb/norm(tb);
I = mat2gray(tb);

对于 normalized_v 我得到了 0.2503 0.3280 0.3312 0.3039 0.2635 0.3083 0.2886 0.1377 0.4340 0.4154

对于 I 我得到了 0.3801 0.6421 0.6531 0.5609 0.4244 0.5756 0.5092 0 1.0000 0.9373 如果这两种方法中的任何一种我应该使用哪一种以及为什么,我应该在提取后将特征向量转换为 1 个元素以便更好地训练还是保留它作为 110 元素向量。

规范化可以通过多种方式执行,例如:

  • 归一化0和1之间的向量。在这种情况下,只需使用:(tb-min(tb))/max(tb)
  • 使最大点在1。这样的话,就用:tb/max(tb)(这是你以前用过的方法)。
  • 使均值为0,标准差为1。这是在分类过程中使用返回值作为特征的最常用方法,因此,我认为它是您现在应该使用的那个:zscore(tb)(或(tb-mean(tb))/std(tb))。

因此,您的最终值为:

zscore(tb)

ans =
-0.6664
 0.2613
 0.3005
-0.0261
-0.5096
 0.0261
-0.2091
-2.0121
 1.5287
 1.3066

编辑:

关于你的第二个问题,要看观察次数。每个分类器都将 MxN 数据矩阵和 Mx1 标签向量作为输入。在这种情况下,M 指的是 observations 的数量,而 N 指的是 features 的数量。通常,为了避免过拟合,建议使用小于观测数十分之一的特征数(即观测数必须M > 10N)。

因此,在您的情况下,如果您使用整个 110 组特征,您应该至少有 1100 个观察值,否则可能会出现过度拟合的问题。