Problembehebung: die eingabe enthält nan, unendlich oder einen wert, der zu groß für dtype ist („float64“).


Ein häufiger Fehler, der bei der Verwendung von Python auftreten kann, ist:

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

Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, eine Funktion aus dem scikit-learn-Modul zu verwenden, der DataFrame oder die Matrix, die Sie als Eingabe verwenden, jedoch NaN-Werte oder unendliche Werte aufweist.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben den folgenden Pandas-DataFrame:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' x1 ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4],
                   ' x2 ': [1, 3, 3, 5, 2, 2, 1, np.inf, 0, 3, 4],
                   ' y ': [np.nan, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90]})

#view DataFrame
print (df)

    x1 x2 y
0 1 1.0 NaN
1 2 3.0 78.0
2 2 3.0 85.0
3 4 5.0 88.0
4 2 2.0 72.0
5 1 2.0 69.0
6 5 1.0 94.0
7 4 lower 94.0
8 2 0.0 88.0
9 4 3.0 92.0
10 4 4.0 90.0

Nehmen wir nun an, wir versuchen, mithilfe von Scikit-Learn -Funktionen ein multiples lineares Regressionsmodell anzupassen:

 from sklearn. linear_model import LinearRegression

#initiate linear regression model
model = LinearRegression()

#define predictor and response variables
x, y = df[[' x1 ', ' x2 ']], df. y

#fit regression model
model. fit (x,y)

#print model intercept and coefficients
print (model. intercept_ , model. coef_ )

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

Wir erhalten eine Fehlermeldung, weil der von uns verwendete DataFrame sowohl unendliche als auch NaN-Werte hat.

So beheben Sie den Fehler

Um diesen Fehler zu beheben, entfernen Sie zunächst alle Zeilen aus dem DataFrame, die unendliche oder NaN-Werte enthalten:

 #remove rows with any values that are not finite
df_new = df[np. isfinite (df). all ( 1 )]

#view updated DataFrame
print (df_new)

    x1 x2 y
1 2 3.0 78.0
2 2 3.0 85.0
3 4 5.0 88.0
4 2 2.0 72.0
5 1 2.0 69.0
6 5 1.0 94.0
8 2 0.0 88.0
9 4 3.0 92.0
10 4 4.0 90.0

Die beiden Zeilen mit unendlichen oder NaN-Werten wurden entfernt.

Wir können nun mit der Anpassung unseres linearen Regressionsmodells fortfahren:

 from sklearn. linear_model import LinearRegression

#initiate linear regression model
model = LinearRegression()

#define predictor and response variables
x, y = df_new[[' x1 ', ' x2 ']], df_new. y

#fit regression model
model. fit (x,y)

#print model intercept and coefficients
print (model. intercept_ , model. coef_ )

69.85144124168515 [5.72727273 -0.93791574]

Beachten Sie, dass wir dieses Mal keine Fehler erhalten, da wir zuerst die Zeilen mit unendlichen oder NaN-Werten aus dem DataFrame entfernt haben.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

So beheben Sie das Problem in Python: Das Objekt „numpy.ndarray“ kann nicht aufgerufen werden
So beheben Sie: TypeError: Das Objekt „numpy.float64“ kann nicht aufgerufen werden
So beheben Sie: Typfehler: Erwarteter String oder Bytes-Objekt

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert