【发布时间】:2021-11-05 07:42:08
【问题描述】:
我试图处理数据集中的异常值,但在检查它们的数量时,我发现每一列中大约有 95% 的异常值!这太奇怪了。
那么使用 IQR 替换这些值是一个不错的选择,还是应该保持原样?
def check_outliers(col) :
outliers = []
Q1 = col.quantile(.25)
Q3 = col.quantile(.75)
IQR = Q3 - Q1
lowerLimit = Q1 - 1.5*IQR
higherLimit = Q3 - 1.5*IQR
for elt in col :
if elt < lowerLimit or elt > higherLimit :
outliers.append(elt)
return np.array(outliers), lowerLimit, higherLimit
for col in train.columns :
arr,lowerLimit,higherLimit = check_outliers(train[col])
print(col, len(arr))
train[col] = np.where(train[col]>higherLimit,higherLimit,train[col])
train[col] = np.where(train[col] <lowerLimit,lowerLimit,train[col])
我认为这些值可能是一些人为错误或系统故障的结果。所以我们不能简单地接受或丢弃它们,因为那样我们会错过其他特征数据。
所以我说为什么不使用 IQR?
但是,应用它后,我的模型预测结果是完美的,这意味着存在问题!
【问题讨论】:
-
数据集中有 95% 的异常值通常表明出现了问题。我建议再次检查该过程并查看某处是否存在问题
-
一般来说,这对于Cross Validated(一个专注于统计的 Stack Exchange 站点)来说是一个更好的问题。 Stack Overflow 只关注关于编写代码的狭隘、具体的问题,并且存在规范正确的答案。
标签: python data-science outliers