Как найти наиболее часто встречающиеся значения для партии с помощью «прокатки (окна)»? - PullRequest
0 голосов
/ 10 февраля 2019

Я хочу применить функцию скользящего окна к y_train DataFrame:

y_train - это один столбец:

0
0
1
..
2
0
3
0

Уникальные значения в y_train:

np.unique(y_train.values)

> array([0, 1, 2, 3])

Когда я применяю этот код, я получаю значения с плавающей запятой в y_train:

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

Новые уникальные значения в y_train:

np.unique(y_train.values)

> array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. ])

Как я могуприменить функцию скользящего окна, чтобы получить наибольшее значение ЧАСТОТ для каждой партии window вместо медианы?

1 Ответ

0 голосов
/ 10 февраля 2019

Мы могли бы использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...