如何标准化用于从图像中提取特征的向量?
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 个观察值,否则可能会出现过度拟合的问题。
我的实际矢量有 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 个观察值,否则可能会出现过度拟合的问题。