2017-10-07 4 views
0

i ma fonction dataframe Barème comme suit:Les données traitées avec StandartScaler peuvent-elles contenir des valeurs> 1 ou <-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) 

la dernière fonction ajoute des valeurs qui se situent au-delà des contraintes à la liste [-1, 1], Il trouve environ 100 éléments, max: 78,86000099160675, min: -2.785050711746339

Est-ce normal, ou ai-je fait une erreur?

Répondre

2

StandardScaler fait la conversion basée sur la distribution normale standard (dont la moyenne est zéro et l'écart type est 1). Dans cette distribution, la variable aléatoire peut prendre n'importe quelle valeur entre -infinity et infinity. Les valeurs plus grandes seront plus improbables mais elles peuvent apparaître. En fait, la probabilité que vous puissiez voir une valeur inférieure à -1 ou supérieure à 1 est d'environ 32%. enter image description here.

Voir this Khan Academy page pour la source de l'image et quelques exemples de calculs. Dans une normalisation standard min-max où vous soustrayez la valeur minimale et divisez par la plage, vous obtenez des valeurs comprises entre 0 et 1, mais cela peut être modifié avec une fonction linéaire pour obtenir des valeurs comprises entre -1 et 1. Les valeurs sont comprises entre 0 et 1.