天天看点

异常值检测方法-箱线图(boxplot)

简述:

  盒图是在1977年由美国的统计学家约翰·图基(John Tukey)发明的。它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。也可以往盒图里面加入平均值(mean)。如下图。下四分位数、中位数、上四分位数组成一个“带有隔间的盒子”。上四分位数到最大值之间建立一条延伸线,这个延伸线成为“胡须(whisker)”。

异常值检测方法-箱线图(boxplot)

  由于现实数据中总是存在各式各样地“脏数据”,也成为“离群点”,于是为了不因这些少数的离群数据导致整体特征的偏移,将这些离群点单独汇出,而盒图中的胡须的两级修改成最小观测值与最大观测值。这里有个经验,就是最大(最小)观测值设置为与四分位数值间距离为1.5个IQR(中间四分位数极差)。即:

异常值检测方法-箱线图(boxplot)

IQR = Q3-Q1,即上四分位数与下四分位数之间的差,也就是盒子的长度。

  • 最小观测值为min = Q1 - 1.5*IQR,如果存在离群点小于最小观测值,则胡须下限为最小观测值,离群点单独以点汇出。如果没有比最小观测值小的数,则胡须下限为最小值。
  • 最大观测值为max = Q3 -1.5*IQR,如果存在离群点大于最大观测值,则胡须上限为最大观测值,离群点单独以点汇出。如果没有比最大观测值大的数,则胡须上限为最大值。

通过盒图,在分析数据的时候,盒图能够有效地帮助我们识别数据的特征:

  1.  直观地识别数据集中的异常值(查看离群点)。
  2.  判断数据集的数据离散程度和偏向(观察盒子的长度,上下隔间的形状,以及胡须的长度)。

箱型图与3-sigma的搭配

通常,3-sigma经常用到异常值检测中,但是极容易受到个别异常值的影响,使得检测效果不好,因此,將3-sigma与箱型图结合,通过权重系数ratio合理分配两者的重要程度 ,可有效检测异常值,公式如下:

min = Q1 - 1.5*IQR
max = Q3 -1.5*IQR
ratio = 0.3
low = 3-sigma*ratio + min*(1-ratio)
hight = 3-sigma*ratio + max*(1-ratio)
           

seaborn(sns)调用举例:

当您使用Seaborn时,您可以使用库本身提供的内置数据集之一,也可以加载Pandas DataFrame。

要开始使用内置的Seaborn数据集,可以使用load_dataset()函数。 要查看内置的所有数据集,请点击此处查看 https://github.com/mwaskom/seaborn-data 。

1、小费数据集

异常值检测方法-箱线图(boxplot)
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

tips = pd.read_csv("../seaborn-data/tips.csv")
sns.violinplot(x="total_bill", data=tips)
plt.show()
           

2、鸢尾花卉数据集

异常值检测方法-箱线图(boxplot)
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

iris = pd.read_csv("../ImportData/iris.csv")  # iris = sns.load_dataset("iris")
sns.swarmplot(x="species", y="petal_length", data=iris)
plt.show()
           

3、泰坦尼克数据集

异常值检测方法-箱线图(boxplot)
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

titanic = pd.read_csv("../seaborn-data/titanic.csv")
sns.factorplot("class", "survived", "sex", data=titanic, kind="bar", palette="muted", legend=True)
plt.show()
           

参考:

  • https://www.jianshu.com/p/5ff47c7d0cc9
  • https://www.cnblogs.com/space-place/p/7643480.html

继续阅读