Прошу прощения за, наверное, глупый вопрос, но я пытаюсь теперь часами оценивать плотность из набора данных 2d. Предположим, что мои данные заданы массивом: sample = np.random.uniform(0,1,size=(50,2))
. Я просто хочу, чтобы использовать scipys scikit узнать пакет для оценки плотности из массива образца (который здесь, конечно, 2d равномерная плотность), и я пытаюсь следующее:Как оценивается плотность ядра 2d в python (sklearn)?
import numpy as np
from sklearn.neighbors.kde import KernelDensity
from matplotlib import pyplot as plt
sp = 0.01
samples = np.random.uniform(0,1,size=(50,2)) # random samples
x = y = np.linspace(0,1,100)
X,Y = np.meshgrid(x,y) # creating grid of data , to evaluate estimated density on
kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(samples) # creating density from samples
kde.score_samples(X,Y) # I want to evaluate the estimated density on the X,Y grid
Но последний шаг всегда приводит к ошибке : score_samples() takes 2 positional arguments but 3 were given
Таким образом, возможно, что .score_samples не может принимать сетку в качестве входных данных, но нет учебников/документов для случая 2d, поэтому я не знаю, как исправить эту проблему. Было бы здорово, если бы кто-то мог помочь.
Это потому, что 'kde.score_samples' принимает только один аргумент,' x'. Вы пытались прочитать документацию? С почти всеми моделями sklearn вам нужно вызвать 'model.fit (X, Y)', тогда вы можете использовать 'score_samples' только на' X' –