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

Can dataframe processed with StandartScaler contain values >1 or <-1?

我按如下方式缩放我的特征数据框:

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] 限制的值添加到列表中, 它找到 ~100 个元素,最大值:78.86000099160675,最小值:-2.785050711746339

是正常的还是我弄错了?

StandardScaler 根据标准正态分布(均值为零,标准差为 1)进行转换。在这个分布中,随机变量可以取 -infinity 和 infinity 之间的任何值。较大的值不太可能出现,但它们可能会出现。事实上,您可以看到小于 -1 或大于 1 的值的概率约为 32%。 .

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

在减去最小值并除以范围的标准最小-最大归一化中,您得到的值介于 0 和 1 之间,但这可以用线性函数修改,因此您可以获得 -1 和 1 之间的值.