我正在尝试使用 scikit learn 拟合一个简单的机器学习模型。在这条线上:
clf.fit(features, labels)
我得到一个熟悉的错误:
Input contains NaN, infinity or a value too large for dtype('float64').
每当我在我的数据中有 NaN 值之前遇到这种情况时。我已经确认数据中没有 NaN。.fit() 方法的两个输入(特征和标签)是 np 数组,但它们是从 pandas 数据帧生成的。就在拉出我打印的 NaN 值之前:
print(features_df[features_df.isnull().any(axis=1)])
print(labels_df[labels_df.isnull().any(axis=1)])
这打印了空数据帧,所以我知道其中没有包含 NaN 值的行。我还在转换后检查了 numpy 数组的 NaN 值,甚至使用 np sum() 方法成功地将它们求和,因此在传递给 fit 的特征或标签 np 数组中没有 NaN 值。
这意味着必须有无穷大的值或非常大的值,这两者我都很难相信。有什么方法可以打印数据框或 np 数组中的任何值:
are NaN, infinity or a value too large for dtype('float64')?
我需要让它们专门向我指出,因为我无法用我的眼睛找到它们并且没有 NaN 值。