我的代码是分析来自kaggle的PUBG数据集并制作模型。我已经提取了所有特征,并使用 sklearn 中的 StandardScaler 对它们进行了标准化。
//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 格式。但我如何收到此错误以及如何解决它?
在 stackoverflow 上尝试了有关此问题的其他查询,所有查询都出现了 nan 或其他困惑的情况,我不知道这段代码在哪里困惑了。
最佳答案
您的检查点不正确,因为您正在使用检查
.所有
数据是否为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
关于python - ValueError:输入包含 NaN、无穷大或对于 dtype ('float64' 来说太大的值),即使 isnan 和 isinf 为 false 且 dtype=float64 时也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53203142/