多元高斯分布异常检测代码_scikitlearn — 奇异点与离群点的检测

许多应用程序要求能够检测出一个新的观测值是否与现有观测值具有相同的分布,如果具有相同的分布,则它是一个 内联值,如果是不同的分布,则它是一个 离群值。通常,此功能用于对现实数据集进行清洗。现在我们先作出两个重要区分:
  • 离群点检测训练数据包含离群值,这些离群值被定义为远离其他观测值的观测值。因此,孤立点检测估计器试图拟合训练数据最集中的区域,而忽略异常观测值。
  • 奇异点检测训练数据不受异常值的污染,我们感兴趣的是检测一个的观测值是否是异常值。在这种情况下,离群值也称为奇异值。
离群点检测和奇异点检测都用于异常点检测,异常点检测针对于异常或不寻常的观察结果。离群点检测也称为无监督异常检测,奇异点检测称为半监督异常检测。在离群点检测中,由于可用的估计器假设了离群点/异常点位于低密度区域,因此离群点/异常点不能形成密集的聚类。相反,在奇异点检测的情况下,只要新奇点/异常点位于训练数据的低密度区域(在这种情况下被认为是正常的),它们就可以形成密集的簇。 scikit-learn项目提供了一套机器学习工具,可用于奇异点或离群点检测。通过从数据中以无监督的方式学习对象来实现此策略。
estimator.fit(X_train)
然后,可以使用 predict 方法将新的观测值分类为内联值或异常值:
estimator.predict(X_test)
内联项标记为1,而异常值标记为-1。该预测方法在估计器计算的原始评分函数(raw  scoring function)上使用了一个阈值(threshold )。此评分函数可通过 score_samples 方法进行访问,而阈值可由 contamination 参数来控制。 decision_function 方法也是从评分函数定义的,这样负的值是异常值,非负的值是内联值:
estimator.decision_function(X_test)
请注意, neighbors.LocalOutlierFactor 默认不支持 predict , decision_functionscore_samples 方法,仅支持 fit_predict 方法,因为此估计器最初是用于离群点检测的。训练样本的异常得分可以通过 negative_outlier_factor_ 属性获得。 如果您真的想使用 neighbors.LocalOutlierFactor 进行奇异点检测,即预测标签或计算新的未见过的数据的异常得分,则可以在拟合估计器之前将 novelty 参数设置为 True 来实例化估计器。在这种情况下, fit_predict 方法不可用。 警告: 使用局部离群因子进行奇异点检测novelty 设置为 True 时,请注意,您必须只能对新的未见过数据而不是对训练样本使用 predict , decision_functionscore_samples 方法,因为这会导致错误的结果。训练样本的异常得分可以通过 negative_outlier_factor_ 属性获得。 下表总结了 neighbors.LocalOutlierFactor 类用于离群点和奇异点检测的方法。 方法 离群点检测 N
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值