使用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%。 。
查看this Khan Academy page的图像来源和一些示例计算。
在标准min-max标准化中,您可以将最小值减去除以范围,即可得到介于0和1之间的值,但可以使用线性函数对其进行修改,以便可以获得-1和1之间的值。