Я пытался внедрить KDE, но немного застрял в математике.
Я дам псевдокод моего текущего способа выполнения KDE, чтобы лучше показать вам мою проблему.
(Я повторил пример из Википедии: https://en.wikipedia.org/wiki/Kernel_density_estimation )
Определите интервал KDE и количество используемых точек ([-6, 11] и я использовал 1000 «точек» между -6,0 и 11,0])
Переберите все точки и дайте каждой точке вероятность, добавив ядра из заданных точек данных. Теперь каждая точка от -6 до 11 имеет вероятность быть выбранной.
Убедитесь, что вероятность всех точек в сумме составляет 100%, и сделайте выборки в соответствии с вероятностью точек.
Это работает и даст правильный результат, если я его построю, но я не могу не чувствовать, что это очень обратный способ ведения дел.
Было бы неплохо не вычислять вероятность для каждой точки интервала, а просто получить формулу из KDE, которой я даю случайные числа и получаю выборки в соответствии с вероятностью. Кто-нибудь знает как это сделать?
Кстати, я использую С++ и хотел бы продолжать это делать.