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. ]])
