赞
踩
背景:有不同型号的焊接头在一段时间的磨损程度,当磨损程度出现异常了,报警,提醒更换焊接头
难点:如何确定怎样算异常,数据分析方法
知识点:DBSCAN算法
思路:
1.将磨损数据进行差分求绝对值取平均值作为聚类算法的半径,项目部署后设置每5min自动运行一次,每次只取后面20个值进行聚类分析,找出异常值(噪音点),一旦找到,就预警。
DBSCAN(Density-Based Spatial Clustering of Application with Noise)是一种典型的基于密度的聚类算法,在DBSCAN算法中将数据点分为一下三类:
1、DBSCAN聚类算法的优缺点包括:
不需要预先指定簇的数量。
能够识别离群点和噪声点。
能够处理任意形状的簇。
对于密度高的簇能够表现出色。
2、DBSCAN聚类算法的缺点包括:
对于密度低的簇,聚类效果可能不如其他算法。
对于高维数据,聚类效果可能不佳。
3、DBSCAN聚类算法的应用包括:
图像分割
地理信息系统中的空间聚类
计算机视觉中的对象跟踪
社交网络分析中的社群发现
1.两个参数
2.代码
- import pandas as pd
- from sklearn.cluster import DBSCAN
- import numpy as np
-
- # 读取Excel数据
- data = pd.read_excel('path')
-
- # 将日期列转换为日期时间类型
- data['DATE'] = pd.to_datetime(data['DATE'])
-
- # 取最后10个数据
- last_10_data = data[column_name].tail(10000)
- print(last_10_data)
-
- # 计算数据差分的绝对值然后求平均值作为半径
- radius = np.mean(np.abs(np.diff(last_10_data)))
- print("radius:",radius)
- last_10_data_array = last_10_data.values.reshape(-1, 1) # 将数据转换为二维数组
-
- # 创建DBSCAN对象
- dbscan = DBSCAN(eps=radius, min_samples=10)
-
- # 进行聚类
- labels = dbscan.fit_predict(last_10_data_array)
-
- # 标记噪声点
- noise_points = np.where(labels == -1)[0] # 找到噪声点的索引
- num_noise_points = list(labels).count(-1)
- if num_noise_points>0:
- print("ALERT: Detected noise points!") # 执行报警逻辑,如发送警报通知等
- print("Noise points:", last_10_data.iloc[noise_points]) # 输出噪声点的具体数值
- print("噪声点的数目:", num_noise_points)

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。