异常数据检测 | Python实现基于高斯概率分布的异常检测

异常数据检测 | Python实现基于高斯概率分布的异常检测
高斯分布也称为正态分布。它可以被用来进行异常值检测,不过我们首先要假设我们的数据是正态分布的。不过这个假设不能适应于所有数据集。但如果我们做了这种假设那么它将会有一种有效的方法来发现异常值。
Scikit-Learn的EllipticEnvelope[10]模型,它在假设我们的数据是多元高斯分布的基础上计算出高斯分布的一些关键参数过程。过程大致如下:

根据前面定义的类别创建两个不同的数据集 :search_Sat_night和Search_Non_Sat_night。
在每个类别应用EllipticEnvelope(高斯分布)。
我们设置contamination参数,它表示我们数据集中异常值的比例。
使用decision_function来计算给定数据的决策函数。它等于移位的马氏距离[11](Mahalanobis distances)。异常值的阈值为0,这确保了与其他异常值检测算法的兼容性。
使用predict 来预测数据是否为异常值(1 正常值, -1 异常值)

df_class0 = df.loc[df[‘srch_saturday_night_bool’] == 0, ‘price_usd’]
df_class1 = df.loc[df[‘srch_saturday_night_bool’] == 1, ‘price_usd’]

envelope = EllipticEnvelope(contamination = outliers_fraction)
X_train = df_class0.values.reshape(-1,1)
envelope.fit(X_train)
df_class0 = pd.DataFrame(df_class0)
df_class0[‘deviation’] = envelope.decision

你可能感兴趣的:(异常数据检测,python,机器学习,数据挖掘)