[PYTHON] Umgang mit scikit-learns "ValueError: Input enthält NaN, unendlich oder einen Wert, der für dtype zu groß ist ('float64')."

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

Umgang mit scikit-learns "ValueError: Input enthält NaN, unendlich oder einen Wert, der für dtype zu groß ist ('float64')."
Was tun, wenn der Fehler angezeigt wird? Die Eingabe enthält NaN, unendlich oder einen Wert, der für dtype zu groß ist ('float64').
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
So ersetzen Sie eine Teilübereinstimmung durch einen numerischen Wert (Anmerkung 1)
Eine Geschichte über den Umgang mit dem CORS-Problem
So erstellen Sie eine Bezeichnung (Maske) für die Segmentierung mit labelme (semantische Segmentierungsmaske)
[Python] So erhalten Sie mit Enum einen Wert mit einem anderen Schlüssel als dem Wert