使用 python StandardScaler 进行特征缩放会产生负值

Ami*_*ogi 2 python machine-learning scikit-learn

我是机器学习的新手。我正在尝试使用 python StandardScaler 类对我的输入训练和测试数据使用特征缩放。但是,当我看到缩放值时,即使输入值没有负值,它们中的一些也是负值。这是正常的还是我的代码中缺少任何内容。下面给出了用于特征缩放的相关代码。

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
train = sc.fit_transform(train) //train contains training feature matrix
test = sc.transform(test)   //test contains test feature matrix
Run Code Online (Sandbox Code Playgroud)

Pav*_*vel 8

文档

通过去除均值和缩放到单位方差来标准化特征

这意味着,给定一个 input x,将其转换为(x-mean)/std(所有维度和操作都明确定义的地方)。

因此,即使您的输入值都是正值,去除均值也会使其中一些为负值:

>>> x = np.array([3,5,7])
>>> np.mean(x)
5.0
>>> x - np.mean(x)
array([-2.,  0.,  2.])
Run Code Online (Sandbox Code Playgroud)

更多细节: