如何应用 sklearn 的 EllipticEnvelope 找出给定数据集中的最高异常值?

How to apply sklearn's EllipticEnvelope to find out top outliers in the given dataset?

我正在使用 sklearn 的 EllipticEnvelope 来查找数据集中的异常值。但是我不确定如何为我的问题建模?是不是直接用所有的数据(不分训练集和测试集)套用fit?另外,我将如何获得每个数据点的离群值?我应该在同一个数据集上使用 predict 吗?

是的,请致电 Fit 使用您的所有数据对其进行训练。然后,您可以使用所有数据调用 Predict,其中 returns 1 表示异常值,-1 表示异常值,或者构建所有点的矩阵(以包含所有数据点)并调用 Predict 在每个点上,然后绘制结果,这将为您提供一个漂亮的椭圆图像。

这里是 full example 与其他方法的比较。

正确的做法是:

  1. 将数据分为normaloutliers
  2. normal 数据中提取大样本作为 normal_train 用于拟合新颖性检测模型。
  3. 使用 normal 中未在训练中使用的样本(比如 normal_test)和 outlier 中的样本(比如 outlier_test)创建一个测试集test 数据 (normal_test + outlier_test) 的分布保持人口分布的一种方式。
  4. 预测此 test 数据以获得常用指标(accuracysensitivitypositive-predictive-value 等)

哇。我已经走了很远!