У меня есть 2-мерный массив значений, который я хотел бы выполнить с помощью Gaussian KDE, с уловкой: предполагается, что точки имеют разные отклонения , Для этого у меня есть второй двумерный массив (с той же формой), который является дисперсией гауссова, который будет использоваться для каждой точки. В простом примере,KDE в python с разными mu, sigma/отображение функции в массив
import numpy as np
data = np.array([[0.4,0.2],[0.1,0.5]])
sigma = np.array([[0.05,0.1],[0.02,0.3]])
было бы четыре гауссианы, первый из которых центрирована в точке х = 0,4 с σ = 0,05. Примечание: Фактические данных намного больше, чем 2х2
Ищу одну из двух вещей:
- Гауссов KDE решатель, который позволит пропускной способности изменять для каждой точки
или
- Способ отображения результатов каждого гауссова в трехмерный массив, каждый из которых оценивается по гауссовым точкам (например, e оценивать каждый центр/σ пара вдоль np.linspace (0,1,101)). В этом случае я мог бы, например, имеют значение KDE при x = 0,5, беря outarray [:,:, 51].
Разве вы не можете нарезать массив рядом? Например. выполняют 1-мерный KDE, например. 'data [i ,:] 'в цикле' for' на 'i в диапазоне (data.shape)'? Кроме того, вы посмотрели на это? http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.gaussian_kde.html –
Строка-строка не будет работать, поскольку каждая ячейка имеет свою собственную дисперсию. Cell-by-cell может работать, я просто не знаю, как это реализовать - моя текущая реализация берет порядок слишком долго. Что касается scipy пакета, я в настоящее время пытаюсь переписать его в соответствии с моими потребностями. Если не появятся лучшие ответы, я, вероятно, в конечном итоге это сделаю. – Tom