Python 根据核密度估计重新创建样本

Python 根据核密度估计重新创建样本,python,scipy,data-science,kernel-density,Python,Scipy,Data Science,Kernel Density,我正在使用tSNE调查两组高维数据之间的差异。我连接所有数据,运行tSNE,同时跟踪属于每个组的数据索引。然后,对两组tSNE结果进行核密度估计。接下来,我在一个规则的网格上计算2KDE,最后计算结果的差异 最后的差异数据是一个点网格,其中第1组中密度较高的区域为正值,第2组中密度较高的区域为负值 我想做的是从负区域和正区域创建两个新模型,并从每个区域中采样新点。我需要从密度图生成样本。如何“反转”从数据点生成密度图的过程 下面是相关的代码摘录,它给出了差异图,以及一个示例 kde1 = gau

我正在使用tSNE调查两组高维数据之间的差异。我连接所有数据,运行tSNE,同时跟踪属于每个组的数据索引。然后,对两组tSNE结果进行核密度估计。接下来,我在一个规则的网格上计算2KDE,最后计算结果的差异

最后的差异数据是一个点网格,其中第1组中密度较高的区域为正值,第2组中密度较高的区域为负值

我想做的是从负区域和正区域创建两个新模型,并从每个区域中采样新点。我需要从密度图生成样本。如何“反转”从数据点生成密度图的过程

下面是相关的代码摘录,它给出了差异图,以及一个示例

kde1 = gaussian_kde(
    np.vstack(
        [
            tsne_results1[:, 0],
            tsne_results1[:, 1]
        ]
    )
)
kde2 = gaussian_kde(
    np.vstack(
        [
            tsne_results2[:, 0],
            tsne_results2[:, 1]
        ]
    )
)

# evaluate on a regular grid
xgrid = np.linspace(x_min, x_max, 250)
ygrid = np.linspace(y_min, y_max, 250)
Xgrid, Ygrid = np.meshgrid(xgrid, ygrid)
xy_grid = np.vstack([Xgrid.ravel(), Ygrid.ravel()])

z1 = kde1.evaluate(xy_grid)
z2 = kde2.evaluate(xy_grid)

z = z2 - z1

我想你只是在追求你的
kde
s的方法,例如:

kde1.resample(10)
将从KDE中抽取10个样本。函数名有点不幸,但它与
scipy.stats
发行版中的
rvs
非常相似