我将我的功能数据放大如下:
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个元素,max : 78.86000099160675,min :-2.785050711746339。
这是正常的,还是我犯了一个错误?
发布于 2017-10-07 12:59:51
StandardScaler根据标准正态分布(均值为零,标准差为1)进行转换。在这个分布中,随机变量可以在-infinity和无穷远之间取任意值。更大的价值不太可能出现,但它们可能会出现。事实上,你能看到一个小于-1或大于1的值的概率大约是32%。
。
有关图像的来源和一些示例计算,请参见这个可汗学院的页面。
在标准的min-max归一化中,减去最小值并除以范围,得到0到1之间的值,但这可以用一个线性函数来修改,这样就可以得到-1和1之间的值。
https://stackoverflow.com/questions/46624947
复制