ValueError: Входные данные содержат NaN, бесконечность или слишком большое значение для dtype ('float64'), даже когда isnan и isinf имеют значение false и dtype = float64 - PullRequest
0 голосов
/ 08 ноября 2018

Мой код - проанализировать набор данных PUBG из kaggle и сделать модель. Я извлек все функции и стандартизировал их, используя StandardScaler из sklearn .

//Snippet

X=standardized_data
y=training_features_output
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.30,random_state=42)
print(standardized_data.shape,training_features_output.shape)

[Вывод]: (4446966, 16) (4446966,)

print(np.all(np.isinf(standardized_data)))
print(np.all(np.isinf(training_features_output)))
print(np.all(np.isnan(standardized_data)))
print(np.all(np.isnan(training_features_output)))

[Вывод]:
Ложь
Ложные
Ложные
Ложные

print(X.dtype)
print(y.dtype)

[Вывод]:
dtype ('float64')
dtype ('float64')

model=LinearRegression()
model.fit(X_train,y_train)
y_train_pred=model.predict(X_train)
y_test_pred=model.predict(X_test)
print('Train r2_accuracy:',r2_score(y_train,y_train_pred))
print('Test r2_accuracy:',r2_score(y_test,y_test_pred))

ValueError: Вход содержит NaN, бесконечность или значение, слишком большое для dtype ('float64').

ошибка фото
Полный код

Из приведенных выше выводов видно, что они не имеют значений nan и бесконечных в наборе данных, а также данные находятся в float64 . но как я получаю эту ошибку и как ее устранить?
Пробовал другие запросы по этому поводу в stackoverflow, у всех была нана или что-то испортилось, и я не знаю, где этот код испортился.

1 Ответ

0 голосов
/ 08 ноября 2018

Ваша контрольная точка неверна , потому что вы проверяете, all данные inf с использованием np.all().

print(np.all(np.isinf(standardized_data)))
...

Вместо этого используйте np.any().

Доказательство

a = [np.inf, 0, 1]

np.all(np.isinf(a))
#False

np.any(np.isinf(a))
#True
...