Как найти точку перед крутым падением с помощью Python? - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть отдельный набор данных, и я нанесу его на график ниже.Я хотел бы найти точку до того, как кривая имеет крутой спад, который должен быть около индекса = 600. Я прочитал этот пост и попытался использовать максимальную абсолютную вторую производную, чтобы найти точку, но результатэто неправильно, потому что есть некоторые «неровные» точки, и я не уверен, называется ли точка, которую я хочу найти, точечной точкой или нет.

Я думаю о сглаживании кривой.Но перед сглаживанием есть ли другой подход, который я могу попробовать?

plt.scatter(range(len(score)),score)
plt.axvline(x=600,linestyle='--')

plt.xlabel('Index')
plt.ylabel('Scores')
plt.show()

enter image description here

1 Ответ

0 голосов
/ 25 сентября 2019

Возможно, это будет работать;он просто основан на аппроксимации производной с «центральной разностью», то есть для индекса i, производная в этой точке рассчитывается с использованием точек h позади и h впереди (score[i+h]-score[i-h])/(2*h).

def derivatives(score, h=100):
    score_derivatives = {}
    for i in range(h,len(score)-h):
        first_derivative = (score[i+h]-score[i-h])/(h*2)
        score_derivatives[i] = first_derivative
    return score_derivatives

Это вернет вам словарь производных по центральной разнице в каждом индексе.Вам просто нужно будет пройтись по этому словарю, чтобы найти первый индекс со значением, меньшим, чем предварительно установленный порог (градиент вашего «крутого падения»).

Если h достаточно большой (яустановите значение по умолчанию 100), этот метод будет устойчив к шуму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...