2017-10-07 92 views
0

我比例我的特徵數據幀如下:使用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

這是正常的,還是我犯了一個錯誤?

回答

2

StandardScaler根據標準正態分佈(其均值爲零,標準差爲1)進行轉換。在這個分佈中,隨機變量可以取-infinity和infinity之間的任何值。較大的值將更不可能,但它們可以出現。事實上,你可以看到一個小於-1或大於1的值的概率約爲32%。 enter image description here

查看this Khan Academy page的圖像來源和一些示例計算。

在標準min-max標準化中,您可以將最小值減去除以範圍,即可得到介於0和1之間的值,但可以使用線性函數對其進行修改,以便可以獲得-1和1之間的值。

相關問題