检测和替换异常值

问题描述 投票:0回答:1

在我看来,有多种方法可以处理数据集异常值

> -> Delete data
> -> Transforming using log or Bin
> -> using mean  median
> -> Test separately

我有一个约50000个观察值的数据集,每个观察值都有相当大的离群值(某些变量具有少量的离群值,一些变量具有100-200个离群值),因此排除数据并不是我要寻找的数据,因为它导致我丢失大量数据。

[我读到某处使用均值和中位数表示人工离群值,但就我而言,我认为离群值是自然的

enter image description here

我实际上是要使用中位数来消除离群值,然后使用均值来填充缺失值,但这似乎没什么问题,但是我确实在此代码中使用了它,尽管如此

median = X.median()
std =X.std()
outliers = (X - median).abs() > std
X.outliers = np.nan
X.fillna(median, inplace = True)

它的确降低了仅一种模型逻辑回归的过拟合,但在随机森林上仍给出了100%,并且图形的形状从enter image description here对此enter image description here所以我真的很困惑使用什么技术?我也尝试替换数据的第5个和第95个百分位数,但效果不佳。我应该将1到10之间的每一列中存在的数据分类吗?我还应该在应用任何模型之前对数据进行标准化或标准化吗?任何指导将不胜感激

python machine-learning outliers
1个回答
0
投票

检查可靠的统计信息。

我建议检查Huber的方法/ winsorization,您也have in Python.

对于假设检验,您需要Wilcoxon签署排名检验,而我认为是Mann-Whitney检验

© www.soinside.com 2019 - 2024. All rights reserved.