基于K均值聚类的网络流量异常检测Python代码
时间: 2024-12-16 14:28:12 浏览: 7
基于K均值聚类算法的网络流量异常检测通常用于监控数据集中流量模式,并识别出与其他簇中心显著不同的“异常”点。下面是一个简单的Python代码示例,使用scikit-learn库进行网络流量数据的K-means聚类异常检测:
```python
from sklearn.cluster import KMeans
import numpy as np
import pandas as pd
# 假设df是包含网络流量数据的DataFrame,每一列代表一个时间戳的流量值
def kmeans_anomaly_detection(df, threshold=3):
data = df.values.reshape(-1, 1) # 将DataFrame转换为一维数组
kmeans = KMeans(n_clusters=2) # 初始化k-means模型,这里假设正常流量是两个簇
kmeans.fit(data)
labels = kmeans.labels_ # 获得每个样本的聚类标签
cluster_centers = kmeans.cluster_centers_
# 计算每个样本到最近簇中心的距离
distances = np.min(np.linalg.norm(data - cluster_centers[labels], axis=1))
# 定义阈值,超过这个距离的点视为异常
anomalies = np.where(distances > threshold)[0]
return anomalies
# 使用示例
anomalies = kmeans_anomaly_detection(your_network_traffic_data)
阅读全文