如何从二维密度图中抽取随机样本?



我使用sn . kdeploy绘制了(x,y)坐标对。我想根据二维概率密度函数随机抽样坐标。我该怎么做呢?

下面是一些虚拟数据:

import numpy as np
import seaborn as sns
x_values = np.random.randint(low=0, high=10, size=100)
y_values = np.random.randint(low=0, high=10, size=100)
coordinate_pairs = list(zip(x_values,y_values))
sns.kdeplot(x_values, y_values)

我能够绘制概率密度函数,但是我如何从这个分布中随机抽样(x,y)坐标元组?显然,真实数据并不像上面提供的虚拟数据那样完全是随机的。

谢谢你,祝你今天愉快。

Seaborn不返回包含核密度估计的对象。但是如果你看一下代码,你可以看到他们使用scipy.stats.gaussian_kde。所以你可以在绘图之外做同样的事情。

import numpy as np
from scipy.stats import gaussian_kde
# random 2d values
X = np.random.randn(1000, 2)
# fit kernel density estimate. needs to be transposed for the function
kde = gaussian_kde(X.T)
# now you can resample from it
# transpose to have same shape as X
Y = kde.resample(1000).T

最新更新