如何用Matplotlib绘制Z-score异常检测结果:正常点蓝异常点红
使用Matplotlib绘制Z-score异常检测结果散点图
你已经完成了Z-score异常值识别的基础代码,接下来可以结合Matplotlib实现需求中的散点图效果,完整代码如下:
import numpy as np import matplotlib.pyplot as plt # 原始数据 data = [1, 2, 3, 4, 100] # 计算均值和标准差 mean = np.mean(data) sd = np.std(data) threshold = 2 outliers = [] for i in data: z = (i - mean) / sd # 计算z-score if abs(z) > threshold: # 识别异常值 outliers.append(i) # 分离正常数据和异常数据 normal_data = [x for x in data if x not in outliers] # 准备x轴坐标(让散点分布更清晰) x_normal = range(len(normal_data)) x_outliers = [len(normal_data)] # 将异常值放在正常数据右侧 # 绘制散点图 plt.scatter(x_normal, normal_data, color='blue', label='正常数据') plt.scatter(x_outliers, outliers, color='red', label='异常值') # 添加图例、标题和坐标轴标签 plt.legend() plt.title('Z-score异常检测结果') plt.xlabel('数据索引') plt.ylabel('数据值') # 显示图形 plt.show()
代码说明:
- 导入
matplotlib.pyplot模块用于绘图 - 通过列表推导式从原始数据中分离出正常数据(不在异常值列表中的数据)
- 为两类数据分配不同的x轴坐标,让散点分布更直观
- 分别调用
plt.scatter()绘制正常点(蓝色)和异常点(红色),并设置图例区分 - 添加标题、坐标轴标签,最后用
plt.show()显示图形
内容的提问来源于stack exchange,提问作者Vinayak Raj Urs
相关产品推荐
相关产品推荐

