怪物奇妙物语

宇宙无敌超级美少男的怪物奇妙物语

首页 新随笔 联系 管理
  822 随笔 :: 0 文章 :: 2 评论 :: 16万 阅读

k均值聚类_异常检测

  1. 先来张图,快速理解
    img
  2. 正常数据应该分布在两个簇中
  3. 异常数据,距离两个簇都很远
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
# 正常数据分为两个簇
normal_data1 = np.random.normal(0, 1, (20, 2))
normal_data2 = np.random.normal(10, 1, (20, 2))
# 异常数据两个点
anomalies = np.array([[1, 10],[10,0] ])
data = np.vstack([normal_data1,normal_data2, anomalies])
# 使用K均值聚类算法将数据分为K个簇(K=2)
kmeans = KMeans(n_clusters=2,n_init=10)
kmeans.fit(data)
# 计算每个数据点到其所属簇中心的距离
distances = cdist(data, kmeans.cluster_centers_, 'euclidean')
min_distances = np.min(distances, axis=1)
# 设置阈值并检测异常值
threshold = 5
outliers = data[min_distances > threshold]
# 输出结果
print("Outliers:")
print(outliers)
# 绘制数据的散点图
plt.scatter(normal_data1[:, 0], normal_data1[:, 1])
plt.scatter(normal_data2[:, 0], normal_data2[:, 1])
plt.scatter(anomalies[:, 0], anomalies[:, 1])
plt.show()
posted on   超级无敌美少男战士  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示