Найти режим оценки плотности ядра в данных GPS - PullRequest
1 голос
/ 24 апреля 2019

Я анализирую данные местоположения GPS с весами, указывающими «важность».Это может быть легко нанесено как тепловая карта, например, в Google Maps.Я хотел бы проанализировать это с использованием стека данных python и, в частности, найти режим оценки плотности ядра.

Как вычислить режим KDE в python?

Очень конкретно, учитывая пример на https://scikit -learn.org / stable / auto_examples / соседей / plot_species_kde.html как бы вы нашли место с наибольшей вероятностью нахождения вида "Bradypus variegatus"?

1 Ответ

1 голос
/ 24 апреля 2019

Давайте рассмотрим простой пример получения kde-оценки:

import numpy as np
from scipy.stats import gaussian_kde
from pylab import plt

np.random.seed(10)

x = np.random.rand(100)
y = np.random.rand(100)
kde = gaussian_kde(np.vstack([x, y]))
X, Y = np.meshgrid(np.linspace(0, 1, 100), np.linspace(0, 1, 100))
Z = kde(np.vstack([X.ravel(), Y.ravel()])).reshape(X.shape)

plt.contourf(X, Y, Z)
plt.show()

enter image description here

Теперь мы можем получить координаты X и Y, гдеZ принимает максимальное значение:

X.ravel()[np.argmax(Z.ravel())]

0.3535353535353536

Y.ravel()[np.argmax(Z.ravel())]

0.5555555555555556

На практике при оценке мест наибольшей вероятности появления некоторых видов вам нужна не только одна позиция, но и некоторая область вокруг нее.В этом случае вы можете выбрать, например, все местоположения, где вероятность превышает 90 процентов всех возможных значений вероятности, например,

Y.ravel()[Z.ravel() > np.percentile(Z, 90)]
X.ravel()[Z.ravel() > np.percentile(Z, 90)]

В случае приведенный пример ,Вы можете попробовать тот же подход, чтобы получить желаемый результат.Возможно, вам потребуется настроить пороговое значение, например, выберите 75-процентиль вместо 90-процентиля.

...