【发布时间】:2020-06-02 14:50:06
【问题描述】:
我正在关注 this tutorial 删除异常值。我有一个火车和一个测试集:
train.shape
>>>(38959, 114)
test.shape
>>>(3988, 114)
我有:
z = np.abs(stats.zscore(train.astype(float)))
train = train[(z < 3).all(axis=1)]
z_ = np.abs(stats.zscore(test.astype(float)))
test = test[(z_ < 3).all(axis=1)]
这对于train 来说可以正常工作,但会删除测试中的每一行。无论我是 test[(z_ < 3).all(axis=1)] 还是 test[(z_ > 3).all(axis=1)],它总是会返回一个空数据框。为什么会发生这种情况?两个数据帧都以相同的方式编码并且具有完全相同的列数。只是行数不同。
【问题讨论】:
-
z_不知何故得到了所有nan。test中可能包含nan,所以当你进行 zscore 时,你会得到nan。那么z_ > 3或z_ < 3都是False。这是我的猜测。 -
这不是 nan,如果我打印
z_它实际上包含一堆小于 3 的数字。而且我的集合中也没有 nan,因为我估算它们。 -
那么你需要提供一个重现问题的样本数据集,以便我查看。