Python实现k-means时间序列异常数据检测数据集为excel表格表格中的一列数据为一个时间序列数据异常数据有两个最后返回异常点的列数
下面是使用Python实现k-means时间序列异常数据检测的示例代码:
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
# 读取Excel表格数据
data = pd.read_excel('data.xlsx')
# 提取时间序列数据列
time_series = data['时间序列'].values
# 将时间序列数据转换为二维数组
X = np.array([time_series]).T
# 使用k-means算法进行聚类
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
# 获取每个样本点所属的簇
labels = kmeans.labels_
# 计算每个簇的平均值
cluster_centers = kmeans.cluster_centers_
# 计算每个样本点到其所属簇的距离
distances = np.linalg.norm(X - cluster_centers[labels], axis=1)
# 找到距离最大的两个样本点作为异常点
outliers = np.argsort(distances)[-2:]
# 获取异常点的列数
outlier_columns = data.columns[outliers]
print(outlier_columns)
在上述代码中,首先使用pd.read_excel函数读取Excel表格数据,然后使用data['时间序列'].values提取时间序列数据列,并将其转换为二维数组。接下来,使用KMeans类进行k-means聚类,将数据分为两个簇。然后,计算每个样本点到其所属簇的距离,并找到距离最大的两个样本点作为异常点。最后,通过data.columns[outliers]获取异常点的列数,并打印输出
原文地址: https://www.cveoy.top/t/topic/h6jD 著作权归作者所有。请勿转载和采集!