ValueError:Input contains NaN, infinity or a value too large for dtype('float64') even when isnan and isinf are false and dtype=float64
ValueError:Input contains NaN, infinity or a value too large for dtype('float64') even when isnan and isinf are false and dtype=float64
我的代码是分析来自kaggle的PUBG数据集并制作模型。我使用 StandardScaler 从 sklearn 中提取了所有特征并 Standardised 它们。
//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)
[Output]: (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)))
[Output]:
False
False
False
False
print(X.dtype)
print(y.dtype)
[Output]:
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: Input contains NaN, infinity or a value too large for dtype('float64').
error photo
Full Code
从上面的输出我们可以看出数据集中没有nan和infinite值,而且数据在float64。但我是如何收到此错误的以及如何解决它的?
在 Whosebug 上尝试了有关此问题的其他查询,所有问题都出现了 nan 或其他问题,我不知道这段代码在哪里搞砸了。
您的检查点 不正确 因为您正在 检查 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
我的代码是分析来自kaggle的PUBG数据集并制作模型。我使用 StandardScaler 从 sklearn 中提取了所有特征并 Standardised 它们。
//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)
[Output]: (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)))
[Output]:
False
False
False
False
print(X.dtype)
print(y.dtype)
[Output]:
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: Input contains NaN, infinity or a value too large for dtype('float64').
error photo
Full Code
从上面的输出我们可以看出数据集中没有nan和infinite值,而且数据在float64。但我是如何收到此错误的以及如何解决它的?
在 Whosebug 上尝试了有关此问题的其他查询,所有问题都出现了 nan 或其他问题,我不知道这段代码在哪里搞砸了。
您的检查点 不正确 因为您正在 检查 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