Beim Standardisieren von Daten mit dem StandardScaler von scikit-learn kann der folgende Fehler auftreten.
input
from sklearn.preprocessing import StandardScaler
#Trainingsdaten (Pandas.DataFrame-Typ)
X = training_data()
#Standardisierung
sc = StandardScaler()
sc.fit(X)
output
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
Um dies zu vermeiden, müssen NaN und unendlich aus den Eingabedaten entfernt werden.
Mit dem folgenden Code kann beispielsweise eine Spalte mit mindestens einem NaN aus X entfernt werden.
#Entfernen Sie Spalten, die NaN enthalten, von X.
X.drop(X.columns[np.isnan(X).any()], axis=1)
Beschreibung jeder Funktion
--np.isnan (X): Get True für NaN-Elemente, False für andere Elemente --np.isnan (X) .any (): Ruft eine Liste von True für Spalten mit NaN und False für andere Spalten ab --X.columns [np.isnan (X) .any ()]: Spaltennamen abrufen, die NaN enthalten --X.drop ('col', axis = 1): Entfernen Sie eine Spalte mit dem Spaltennamen col aus X.
Recommended Posts