一, 箱线图
箱线图 (Box-plot) 又称盒须图, 盒式图或箱形图, 是一种用作显示一组数据分散情况资料的统计图, 在数据分析中经常被使用到, 可以被用于异常值的检测.
通过箱线图可以很容易找到数据中的异常值.
二, 使用 python 绘制箱线图
数据集地址: http://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data
1, 未标准化的箱线图
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltif __name__ == '__main__':data = pd.read_csv('G:/dataset/abalone.csv')# 需要绘制箱形图的列, 不包括 ID 列和第一列 box_data = np.array(data.ix[:,2:10])# 绘制箱线图 plt.boxplot(box_data)plt.xlabel('特征索引')plt.ylabel('四分位间距')plt.show()
matplotlib 的 boxplot 默认的上边缘到上四分位数的间距是 1.5IQR, 可以通过 whis 参数进行调节, 超过了上边缘 Q3+1.5IQR 和下边缘 Q1-1.5IQR 的部分视为异常值也就是图中的圆圈所表示的点. 通过上面的箱线图可以发现, 由于第 8 个属性的取值区间比较广, 导致其他属性的箱线图被压缩.
2, 标准化的箱线图
通过将数据进行标准化, 可以解决箱线图被压缩的问题.
# 对数据进行标准化 box_data = (box_data - np.mean(box_data,axis=0)) / np.std(box_data,axis=0)plt.boxplot(box_data)
标准化后的数据均值为 0, 方差为 1. 标准化之后可以清楚的看到, 每个特征的异常值分布情况.
来源: http://www.92to.com/bangong/2018/05-14/33782017.html