当前位置:   article > 正文

基于DBSCAN算法聚类对数据的异常值报警处理(数据挖掘)_dbscan处理异常数据

dbscan处理异常数据

背景:有不同型号的焊接头在一段时间的磨损程度,当磨损程度出现异常了,报警,提醒更换焊接头

难点:如何确定怎样算异常,数据分析方法

知识点:DBSCAN算法

思路:

1.将磨损数据进行差分求绝对值取平均值作为聚类算法的半径,项目部署后设置每5min自动运行一次,每次只取后面20个值进行聚类分析,找出异常值(噪音点),一旦找到,就预警。

DBSCAN算法介绍

DBSCAN(Density-Based Spatial Clustering of Application with Noise)是一种典型的基于密度的聚类算法,在DBSCAN算法中将数据点分为一下三类:

  1. 核心点:在半径Eps内含有超过MinPts数目的点
  2. 边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内
  3. 噪音点:既不是核心点也不是边界点的点(离群点)

性质:

1、DBSCAN聚类算法的优缺点包括:

        不需要预先指定簇的数量。
        能够识别离群点和噪声点。
        能够处理任意形状的簇。
        对于密度高的簇能够表现出色。
2、DBSCAN聚类算法的缺点包括:

        对于密度低的簇,聚类效果可能不如其他算法。
        对于高维数据,聚类效果可能不佳。
3、DBSCAN聚类算法的应用包括:

        图像分割
        地理信息系统中的空间聚类
        计算机视觉中的对象跟踪
        社交网络分析中的社群发现

构建

1.两个参数

  • eps:它是特定邻域的半径。如果两点之间的距离小于或等于 esp,则将其视为其邻居。
  • minPts:给定邻域中形成簇的最小数据点数量。

2.代码

  1. import pandas as pd
  2. from sklearn.cluster import DBSCAN
  3. import numpy as np
  4. # 读取Excel数据
  5. data = pd.read_excel('path')
  6. # 将日期列转换为日期时间类型
  7. data['DATE'] = pd.to_datetime(data['DATE'])
  8. # 取最后10个数据
  9. last_10_data = data[column_name].tail(10000)
  10. print(last_10_data)
  11. # 计算数据差分的绝对值然后求平均值作为半径
  12. radius = np.mean(np.abs(np.diff(last_10_data)))
  13. print("radius:",radius)
  14. last_10_data_array = last_10_data.values.reshape(-1, 1) # 将数据转换为二维数组
  15. # 创建DBSCAN对象
  16. dbscan = DBSCAN(eps=radius, min_samples=10)
  17. # 进行聚类
  18. labels = dbscan.fit_predict(last_10_data_array)
  19. # 标记噪声点
  20. noise_points = np.where(labels == -1)[0] # 找到噪声点的索引
  21. num_noise_points = list(labels).count(-1)
  22. if num_noise_points>0:
  23. print("ALERT: Detected noise points!") # 执行报警逻辑,如发送警报通知等
  24. print("Noise points:", last_10_data.iloc[noise_points]) # 输出噪声点的具体数值
  25. print("噪声点的数目:", num_noise_points)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/855487
推荐阅读
相关标签
  

闽ICP备14008679号