如何用不同尺度的数据标准化特征向量?

数据挖掘 神经网络 数据挖掘 特征工程 正常化 特征缩放
2022-03-09 22:07:58

假设我有一个具有不同类型数字属性的数据集。

假设我想使用神经网络对该数据集进行监督分类。为此,我需要从该数据中提取特征向量。

这些特征向量必须适用于 NN。(应该是标准化/标准化的向量......)

例如,我们的数据集包含来自足球比赛的数据。

数据集:

-------------------------------------------------------------------
| local_elo| vis_elo| local_pts | vis_pts | loc_goals | vis_goals |
-------------------------------------------------------------------
|   2820   |  3250  |     45    |    54   |    13     |     17    |
-------------------------------------------------------------------
|   4230   |  5125  |     87    |    81   |    67     |     65    |
-------------------------------------------------------------------

这两个数据点的特征向量:

x_1 = [2820, 3250, 45, 54, 13, 17]
x_2 = [4230, 5125, 87, 81, 67, 65]

但它们不适合将它们输入神经网络。

如何对该数据集进行预处理以提取适合将其输入神经网络的特征向量?

2个回答

在这种情况下,我们必须使用标准化(用 z 分数代替或减去均值除以标准差):

#find mean of each feature    
mean = data.mean(axis = 0)
#subtract mean
data - = mean
#find standard deviation of each feature
std = data.std(axis = 0)
#divide by it
data /= std

使用 sklearn 中的函数 preprocessing.scale

from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])
X_scaled = preprocessing.scale(X_train)

http://scikit-learn.org/stable/modules/preprocessing.html