跳转至

🔥AI副业赚钱星球

点击下面图片查看

郭震AI

技巧26: 使用滑动窗口找出频繁刷单用户

需求

定义在20分钟连续下单为:刷单

给你一批交易数据,类型为pd.Series,确定这批数据是否存在频繁刷单的行为。

使用滑动窗口

Pandas的rolling方法,求出固定滑动窗口长度的序列。

import pandas as pd

def is_outlier(time_series: pd.Series, outlier_duration=20, outlier_count=5):
    """
    outlier_duration分钟内连续交易outlier_count次认为是异常
    :param time_series:
    :param outlier_duration:
    :param outlier_count:
    :return:
    """
    # 排序
    time_series2 = time_series.sort_values()
    # 基于最早时间的时间跨度
    time_delta = (time_series2 - time_series2.iloc[0]) / np.timedelta64(1, 's') / 60.
    # 求得长度为outlier_count的滑动窗口的时间跨度
    time_cumsum = time_delta.rolling(outlier_count).sum()
     # 若outlier_count次交易的时间小于outlier_duration,就是所定义的刷单,返回True
    if (time_cumsum <= outlier_duration).any():
        return True
    # 不存在刷单
    return False

调用

使用小技巧25,生成随机时间戳序列,调用

series = random_timestamp(9) # hour 等于9点
print(series)

result = is_outlier(pd.Series(series))
print(result)

大家在看

京ICP备20031037号-1 | AI之家 | AI资讯 | Python200 | 数据分析