【问题标题】:Recreate samples from a kernel density estimate从核密度估计重新创建样本
【发布时间】:2019-12-21 04:33:51
【问题描述】:

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

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

我想做的是从负区域和正区域创建 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

【问题讨论】:

    标签: python scipy data-science kernel-density


    【解决方案1】:

    我认为你只是在使用 kdes 的 resample 方法,例如:

    kde1.resample(10)
    

    将从 KDE 中抽取 10 个样本。函数名称有点不幸,但它与来自scipy.stats 分布的rvs 非常相似

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      • 2021-05-08
      • 2017-02-11
      • 1970-01-01
      • 2018-10-06
      • 2019-08-07
      • 1970-01-01
      相关资源
      最近更新 更多