Хотелось бы рассчитать ускорение набора текста на клавиатуре (т.е. по нажатым клавишам).Я рассчитываю ускорение, используя следующий метод:
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
или только наво время этой длинной паузы прогнозируется ускорение?