Comment traiter la "ValueError: Input contient NaN, infinity ou une valeur trop grande pour dtype ('float64')."

Lors de la normalisation des données à l'aide du StandardScaler de scikit-learn, l'erreur suivante peut se produire.

input


from sklearn.preprocessing import StandardScaler

#Données d'entraînement (pandas.Type de DataFrame)
X = training_data()

#Standardisation
sc = StandardScaler()
sc.fit(X)

output


ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

Pour éviter cela, il est nécessaire de supprimer NaN et l'infini des données d'entrée.

Par exemple, le code ci-dessous peut supprimer une colonne contenant au moins un NaN de X.

#Supprimer les colonnes contenant NaN de X
X.drop(X.columns[np.isnan(X).any()], axis=1)

Description de chaque fonction

--np.isnan (X): Get True pour les éléments NaN, False pour les autres éléments --np.isnan (X) .any (): obtient une liste de True pour les colonnes contenant NaN et False pour les autres colonnes --X.columns [np.isnan (X) .any ()]: Récupère les noms de colonnes contenant NaN --X.drop ('col', axis = 1): Supprime une colonne avec le nom de colonne col de X

Recommended Posts

Comment traiter la "ValueError: Input contient NaN, infinity ou une valeur trop grande pour dtype ('float64')."
Que faire si vous obtenez l'erreur L'entrée contient NaN, l'infini ou une valeur trop grande pour dtype ('float64').
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Comment remplacer une valeur numérique pour une correspondance partielle (Remarque 1)
Une histoire sur la façon de traiter le problème CORS
Comment créer une étiquette (masque) pour la segmentation avec labelme (masque de segmentation sémantique)
[Python] Comment obtenir une valeur avec une clé autre que value avec Enum