【发布时间】:2017-05-25 11:11:43
【问题描述】:
对于这个可能很愚蠢的问题,我很抱歉,但我现在正在尝试几个小时来估计一组二维数据的密度。假设我的数据由数组给出:sample = np.random.uniform(0,1,size=(50,2))。我只想使用 scipys scikit learn 包来估计样本数组的密度(这里当然是二维均匀密度),我正在尝试以下操作:
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)然后您才能在X上使用score_samples
标签: python scikit-learn kernel-density