我按如下方式缩放我的要素数据框:
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
这是正常的,还是我弄错了?
答案 0 :(得分:2)
StandardScaler基于标准正态分布(均值为零,标准差为1)进行转换。在此分布中,随机变量可以采用-infinity和infinity之间的任何值。更大的值将更不可能,但它们可以出现。事实上,您可以看到小于-1或大于1的值的概率约为32%。
有关图像的来源和一些示例计算,请参阅this Khan Academy page。
在标准的最小 - 最大标准化中,您减去最小值并除以范围,您将获得介于0和1之间的值,但这可以使用线性函数进行修改,因此您可以获得介于-1和1之间的值。 / p>