我正在为一个电话接线员进行一个关于通话详细记录的异常检测项目,我准备了10000个观测值和80个维度的样本,这些数据代表了一天的流量观测值的总和,数据表示如下:
这只是整个数据集的一小部分。在
然而,我决定使用PYOD库,这是一个提供许多无监督学习算法的API,我决定从CNN开始:
from pyod.models.knn import KNN
knn= KNN(contamination= 0.1)
result = knn.fit_predict(conso)
然后为了可视化结果,我决定在2维中调整样本大小,并以蓝色显示KNN预测的非异常值,红色表示异常值。在
^{pr2}$“df_final_2”是“conso”的数据帧版本。在
然后我把这些都用正确的颜色:
import matplotlib.pyplot as plt
plt.scatter(result_f[0],result_f[1], s=1, c=color)
在图中让我感到不安的是,作为异常值预测的观测值并不是真正的异常值,因为通常异常值位于图的末端,不与正常行为分组,即使通过分析这些异常观测值,它们在原始数据集中的行为是正常的,我尝试过其他的PYOD算法,并修改了每个算法的参数,但至少得到了相同的结果。我在某个地方犯了个错误,我无法分辨。在
谢谢。在
有几件事需要检查:
如果这些都不起作用,请随时在GitHub上打开一个问题报告,我们将进行进一步调查。在
相关问题 更多 >
编程相关推荐