在连接之前或之后使用 StandardScaler 缩放多个功能?
Scaling multiple features with StandardScaler, before or after concatenation?
我有一个图像数据集(像素值从 0 到 255),我想从中提取不同的特征,例如HOG 特征、Gabor 滤波器特征、LBP 和颜色直方图。
我想将这些特征连接成一个特征向量
feature_overall = np.concatenate((feat1, feat2, feat3, feat4), axis=1)
然后使用生成的整体特征向量训练 SVM。
我正在使用 Python 和 Scikit-Image (Skimage)。
我不确定,这里我必须在哪里使用标准定标器?分别针对每个特征,即在连接所有特征之前?还是将标准缩放器应用于连接的特征向量,即应用于生成的整体特征向量?
非常感谢您的帮助
StandardScaler
将每列缩放为均值为 0 和标准差为 1。从这个意义上说,无论您是在串联之前还是之后缩放特征都没有关系。
但是,如果您使用的是 sklern.preprocessing.Normalizer()
,那就很重要了。 Normalizer()
使每一行在某些度量(例如欧几里德)中具有相同的大小。
如果是这样,我会在连接特征之前使用 Normalizer()
,因为您可能希望 HOG 特征的总和在所有图像中保持不变,但您可能不希望 HOG 特征的总和,Gabor滤波器特征,LBP和颜色直方图保持不变
我有一个图像数据集(像素值从 0 到 255),我想从中提取不同的特征,例如HOG 特征、Gabor 滤波器特征、LBP 和颜色直方图。 我想将这些特征连接成一个特征向量
feature_overall = np.concatenate((feat1, feat2, feat3, feat4), axis=1)
然后使用生成的整体特征向量训练 SVM。
我正在使用 Python 和 Scikit-Image (Skimage)。
我不确定,这里我必须在哪里使用标准定标器?分别针对每个特征,即在连接所有特征之前?还是将标准缩放器应用于连接的特征向量,即应用于生成的整体特征向量?
非常感谢您的帮助
StandardScaler
将每列缩放为均值为 0 和标准差为 1。从这个意义上说,无论您是在串联之前还是之后缩放特征都没有关系。
但是,如果您使用的是 sklern.preprocessing.Normalizer()
,那就很重要了。 Normalizer()
使每一行在某些度量(例如欧几里德)中具有相同的大小。
如果是这样,我会在连接特征之前使用 Normalizer()
,因为您可能希望 HOG 特征的总和在所有图像中保持不变,但您可能不希望 HOG 特征的总和,Gabor滤波器特征,LBP和颜色直方图保持不变