使用StandartScaler处理数据帧是否包含大于1或小于-1的值?

使用StandartScaler处理数据帧是否包含大于1或小于-1的值?

问题描述:

我比例我的特征数据帧如下:使用StandartScaler处理数据帧是否包含大于1或小于-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%。 enter image description here

查看this Khan Academy page的图像来源和一些示例计算。

在标准min-max标准化中,您可以将最小值减去除以范围,即可得到介于0和1之间的值,但可以使用线性函数对其进行修改,以便可以获得-1和1之间的值。