Python 时间序列异常检测:使用 k-means 聚类算法识别 Excel 表格中的异常值
这里是一个使用 Python 实现 k-means 时间序列异常数据检测的示例代码:\n\npython\nimport pandas as pd\nimport numpy as np\nfrom sklearn.cluster import KMeans\nfrom sklearn.preprocessing import StandardScaler\n\n# 读取数据集\ndata = pd.read_excel('data.xlsx')\n\n# 提取需要进行异常检测的列数据\ncolumn_data = data['column_name'].values.reshape(-1, 1)\n\n# 数据标准化\nscaler = StandardScaler()\nscaled_data = scaler.fit_transform(column_data)\n\n# 使用k-means进行聚类\nkmeans = KMeans(n_clusters=2, random_state=0)\nkmeans.fit(scaled_data)\n\n# 获取每个数据点的聚类标签\nlabels = kmeans.labels_\n\n# 计算每个聚类中心的距离平均值\ncenter_distances = []\nfor i in range(kmeans.n_clusters):\n cluster_data = scaled_data[labels == i]\n center = kmeans.cluster_centers_[i]\n distance = np.mean(np.linalg.norm(cluster_data - center, axis=1))\n center_distances.append(distance)\n\n# 找到异常点所在的聚类中心\noutlier_cluster = np.argmin(center_distances)\n\n# 找到异常点的索引\noutlier_indices = np.where(labels == outlier_cluster)[0]\n\n# 打印异常点的列数\noutlier_columns = data.columns[outlier_indices]\nprint('异常点的列数:', outlier_columns)\n\n\n请注意替换代码中的data.xlsx为你的数据集文件名,column_name为你要进行异常检测的列的名称。代码首先读取数据集,并提取需要进行异常检测的列数据。然后使用StandardScaler对数据进行标准化,以便于聚类算法的准确性。接下来,使用KMeans聚类算法进行聚类,然后计算每个聚类中心的距离平均值,找到异常点所在的聚类中心。最后,找到异常点的索引,并打印异常点的列数。\n\n注意,这里的异常点定义为聚类中心距离平均值最小的聚类,如果你的异常点定义有所不同,可以根据需要进行修改。
原文地址: https://www.cveoy.top/t/topic/pPbq 著作权归作者所有。请勿转载和采集!