首页 > 新闻中心 > 掌酷科技 > 数码 > 笔记本 >

基于机器学习算法的时间序列价格异常检测(附(6)
2019-02-08 17:33 量化投资与机器学习

# train oneclassSVM

model = OneClassSVM(nu=outliers_fraction, kernel="rbf", gamma=0.01)

model.fit(data)

df['anomaly3'] = pd.Series(model.predict(data))

fig, ax = plt.subplots(figsize=(10,6))

a = df.loc[df['anomaly3'] == -1, ['date_time_int', 'price_usd']] #anomaly

ax.plot(df['date_time_int'], df['price_usd'], color='blue')

ax.scatter(a['date_time_int'],a['price_usd'], color='red')

plt.show();

基于高斯分布的异常检测

高斯分布也称为正态分布。我们将使用高斯分布来开发异常检测算法,也就是说,假设我们的数据是正态分布的。这个假设不能适用于所有的数据集,但是当它成立时,却提供了一种有效的方法来发现异常值。

Scikit-Learn的covariance.EllipticEnvelope是一个函数,它通过假设我们的整个数据集满足多元高斯分布,从而计算数据集一般分布的关键参数。过程如下:

根据前面定义的类别创建两个不同的数据集:search_Sat_night,Search_Non_Sat_night。 对每个类别相应的数据集应用EllipticEnvelope(高斯分布)。 设置contamination参数,即我们数据集中异常值的比例。 我们使用decision_function来计算给定观察点的决策函数。它等于移位的Mahalanobis 距离。异常值的阈值为0,确保了与其他异常值检测算法的兼容性。 predict(X_train) 根据拟合模型来预测X_train的标签(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']

fig, axs = plt.subplots(1,2)

df_class0.hist(ax=axs[0], bins=30)

df_class1.hist(ax=axs[1], bins=30);

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_function(X_train)

df_class0['anomaly'] = envelope.predict(X_train)

envelope = EllipticEnvelope(contamination = outliers_fraction)

X_train = df_class1.values.reshape(-1,1)

envelope.fit(X_train)

df_class1 = pd.DataFrame(df_class1)

df_class1['deviation'] = envelope.decision_function(X_train)

df_class1['anomaly'] = envelope.predict(X_train)

# plot the price repartition by categories with anomalies

a0 = df_class0.loc[df_class0['anomaly'] == 1, 'price_usd']

b0 = df_class0.loc[df_class0['anomaly'] == -1, 'price_usd']

a2 = df_class1.loc[df_class1['anomaly'] == 1, 'price_usd']

b2 = df_class1.loc[df_class1['anomaly'] == -1, 'price_usd']

标签: 数据 检测 算法 异常
0

上一篇:我为什么会买一款2300元的鼠标,这么贵的鼠标又
下一篇:没有了
官方微信公众号:掌酷门户(wapzknet)

首页 > 新闻中心 > 掌酷科技 > 数码 > 笔记本 >
相关资讯

新闻热点
精选美图


客户端合作免责友链
Copyright 2009-2019 冀ICP备09035849号-1
掌酷门户 版权所有 冀公网安备 13092302000152号