Прогнозирование ускорения с использованием InterpolatedUnivariateSpline - PullRequest
0 голосов
/ 11 июня 2019

Хотелось бы рассчитать ускорение набора текста на клавиатуре (т.е. по нажатым клавишам).Я рассчитываю ускорение, используя следующий метод:

def acceleration(x, y, timestamps):
    touch_length = (x.diff() ** 2).add(y.diff() ** 2) ** (0.5)
    touch_length = list(accumulate(touch_length.iloc[1:]))
    time_diff = timestamps.iloc[1:].reset_index(drop=True)
    spl = InterpolatedUnivariateSpline(time_diff, touch_length, k=3).derivative(n=2) # Second derivative
    pred = np.abs(spl(time_diff))
    pred = pred[::-1]
    return pred

Входные данные для метода - это позиции (x, y) и временные метки нажатых клавиш как серии Pandas.

То, что я сейчас видел, это то, что когда я добавляю больше значений, InterpolatedUnivariateSpline возвращает разные результаты, это означает, что, кажется, имеет значение, сколько значений я применяю InterpolatedUnivariateSpline.Это правда?Если да, насколько большими должны быть входные данные?

Например, когда я применяю InterpolatedUnivariateSpline к 5 значениям (т. Е. X, y и временные метки длиной 5 каждый), я получаю разные предсказанные ускорения для первых 3 значений, чемкогда я применяю InterpolatedUnivariateSpline к 10 значениям.

Во-вторых, когда у меня большой разрыв в массиве меток времени (связанный с длительной паузой при наборе), это повлияет на все прогнозируемые ускорения в InterpolatedUnivariateSpline или только наво время этой длинной паузы прогнозируется ускорение?

...