Minmax нормализация на скользящем окне

Как красиво нормализовать данные(0-1) на скользящем окне(5)?

Сейчас есть стандартный нормализатор, нормализующий по всему датасету a:

c = MinMaxScaler().fit_transform(a['Start'])

Так, разумеется, выдает ошибку:

c = MinMaxScaler().fit_transform(a['Start'].rolling(5))` - 

Пример входных данных (слева - входной столбец, справа - то, что хочу получить на выходе):

Слева - входной столбец, справа - то что хочу получить на выходе


Ответы (1 шт):

Автор решения: MaxU

Пример:

In [130]: from sklearn.preprocessing import MinMaxScaler

In [131]: mms = MinMaxScaler()

In [132]: df
Out[132]:
   Start
0      1
1      2
2      3
3      4
4      5
5     10
6      5
7    100
8     10
9      5

In [133]: df["StartNorm"] = mms.fit_transform(df[["Start"]])

In [134]: df
Out[134]:
   Start  StartNorm
0      1   0.000000
1      2   0.010101
2      3   0.020202
3      4   0.030303
4      5   0.040404
5     10   0.090909
6      5   0.040404
7    100   1.000000
8     10   0.090909
9      5   0.040404

Или так:

In [138]: mms.fit_transform(df[["Start"]].rolling(5).mean())
Out[138]:
array([[       nan],
       [       nan],
       [       nan],
       [       nan],
       [0.        ],
       [0.07826087],
       [0.10434783],
       [0.94782609],
       [1.        ],
       [1.        ]])
→ Ссылка