基于局部离群因子(LOF)的离群点检测

2024-06-12 18:25:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理医疗保险索赔数据,并希望识别欺诈索赔。一直在网上阅读,试图找到更好的方法。我在scikit上遇到了以下代码-学习网在

有人知道如何选择离群值吗?代码将它们绘制在一个图形中,但是如果可能的话,我想选择那些异常值。在

我尝试过将y_的预测附加到x数据帧中,但是没有成功。在

print(__doc__)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor

np.random.seed(42)

# Generate train data
X = 0.3 * np.random.randn(100, 2)
# Generate some abnormal novel observations
X_outliers = np.random.uniform(low=-4, high=4, size=(20, 2))
X = np.r_[X + 2, X - 2, X_outliers]

# fit the model
clf = LocalOutlierFactor(n_neighbors=20)
y_pred = clf.fit_predict(X)
y_pred_outliers = y_pred[200:]

下面是我尝试过的代码。在

^{pr2}$

Tags: 数据方法代码importasnpneighborsrandom
1条回答
网友
1楼 · 发布于 2024-06-12 18:25:52

前200个数据是内联,后20个是离群值。当你把预测值拟合到X上时,你将得到y_pred中的离群值(-1)或inliner(1)。所以为了得到预测的异常值,你需要得到那些y_pred=-1并在X中得到相应的值

X_pred_outliers = [each[1] for each in list(zip(y_pred, X.tolist())) if each[0] == -1]

我将y_pred和X组合成一个数组,检查y=-1,如果是,则收集X值。在

然而,这些预测有8个错误(220个中有8个)。这些错误在y_pred[:200]中为-1,在y_pred[201:220]中为1。请注意这些错误。在

相关问题 更多 >