使用StandartScaler处理的数据帧是否包含值> 1或<-1?

时间:2017-10-07 20:45:45

标签: machine-learning scikit-learn standard-deviation

我按如下方式缩放我的要素数据框:

flattened_num_f.head()
num_features_test  = flattened_num_f.fillna(flattened_num_f.mean())

from sklearn.preprocessing import StandardScaler
std_scaler = StandardScaler()

num_train_std = pd.DataFrame(std_scaler.fit_transform(num_features_test.loc[y_train_IDs]), \
                         columns=num_features_test.loc[y_train_IDs].columns, \
                        index=num_features_test.loc[y_train_IDs].index)
test_for_stdness(num_train_std)

最后一个函数将超出[-1,1]约束的值添加到list, 它找到~100个元素,最大值:78.86000099160675,最小值:-2.785050711746339

这是正常的,还是我弄错了?

1 个答案:

答案 0 :(得分:2)

StandardScaler基于标准正态分布(均值为零,标准差为1)进行转换。在此分布中,随机变量可以采用-infinity和infinity之间的任何值。更大的值将更不可能,但它们可以出现。事实上,您可以看到小于-1或大于1的值的概率约为32%。 enter image description here

有关图像的来源和一些示例计算,请参阅this Khan Academy page

在标准的最小 - 最大标准化中,您减去最小值并除以范围,您将获得介于0和1之间的值,但这可以使用线性函数进行修改,因此您可以获得介于-1和1之间的值。 / p>