代码之家  ›  专栏  ›  技术社区  ›  ScalaBoy

如何使用“滚动(窗口)”查找每批最频繁的值?

  •  2
  • ScalaBoy  · 技术社区  · 6 年前

    我要将滚动窗口函数应用于 y_train DataFrame:

    y-列车 是单列:

    0
    0
    1
    ..
    2
    0
    3
    0
    

    中的唯一值 y-列车 :

    np.unique(y_train.values)
    
    > array([0, 1, 2, 3])
    

    当我应用此代码时,在 y-列车 :

    window = 20
    y_train = y_train.rolling(window).median().dropna()
    

    新的唯一值 y-列车 :

    np.unique(y_train.values)
    
    > array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. ])
    

    如何应用滚动窗口功能以获取每个窗口的最频繁值 window 批量而不是中间值?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Divakar    6 年前

    我们可以使用 scipy.stats.mode 随着 apply() -

    In [57]: a
    Out[57]: 
    0    2
    1    3
    2    2
    3    2
    4    7
    5    3
    6    2
    7    4
    8    6
    9    3
    dtype: int64
    
    In [58]: from scipy import stats
    
    In [59]: modeval = lambda x : mode(x)[0]
    
    In [60]: a.rolling(window=5).apply(modeval).dropna()
    Out[60]: 
    4    2.0
    5    2.0
    6    2.0
    7    2.0
    8    2.0
    9    3.0
    dtype: float64