异常值 - 在scikit中检测 - 在管道中使用变形金刚学习

时间:2016-10-27 08:25:34

标签: python scikit-learn outliers

我想知道是否有可能在scikit-learn的管道中包含scikit-learn outlier detection如隔离森林?

所以这里的问题是我们希望仅将这样的对象放在训练数据上,而不对测试数据做任何事情。特别是,人们可能想在这里使用交叉验证。

解决方案怎么样?

构建一个继承自TransformerMixin的类(以及用于ParameterTuning的BaseEstimator)。 现在定义一个fit_transform函数,该函数存储状态(如果函数已被调用)。如果尚未调用,则该函数适合并预测数据的异常函数。如果之前已经调用过该函数,则已经在训练数据上调用了离群值检测,因此我们假设现在我们找到了简单返回的测试数据。

这种方法是否有机会发挥作用,或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:0)

您的问题基本上是异常值检测问题。 希望 scikit-learn提供一些功能来预测您的火车组中的样本是否是异常值。

它是如何运作的?如果你看documentation,它基本上会说:

执行离群值检测的一种常见方法是假设常规数据来自已知分布(例如,数据是高斯分布的)。根据这个假设,我们通常尝试定义数据的“形状”,并且可以将外围观察定义为与拟合形状相距足够远的观察

sklearn提供了一些功能,可用于估算数据的形状。请查看:elliptic envelopeisolation forests

就我而言,我更喜欢使用IsolationForest算法来返回火车组中每个样本的异常分数。然后你可以把他们从你的训练集中拿走。