【问题标题】:Which distances k-means pre-computes when precompute_distances is set to True?当 precompute_distances 设置为 True 时,k-means 预计算哪些距离?
【发布时间】:2018-12-06 02:58:19
【问题描述】:

我正在使用 scikit-learn 来运行 k-means。我查看了 scikit-learn k-means 代码,但我不明白 k-means 如何预先计算距离。哪些距离 k-means 会提前预先计算,而它事先不知道中心的值?

【问题讨论】:

    标签: python scikit-learn k-means computational-geometry euclidean-distance


    【解决方案1】:

    它不会预先计算中心之间的距离,它会预先计算一个点(例如 X)与系统中所有其他点之间的距离,并将它们存储起来以供以后使用。

    检查此line 619 in kmeans,它调用_labels_inertia_precompute_dense,而后者又调用pairwise_distances_argmin_min at line 562。

    pairwise_distances_argmin_min 的文档指出

    计算一个点和一组点之间的最小距离。 此函数计算 X 中的每一行,即 Y 行的索引 哪个是最近的(根据指定的距离)。最小的 距离也会返回。

    所以它不需要知道中心,这只是用来预先计算所有可能的点对之间的距离。

    【讨论】:

    • 谢谢。好的,它预先计算了数据集点之间的距离。但是在哪些情况下这些预先计算的距离会在 k-means 中使用?
    • 当您想使用 scikit-learn 中未实现的距离函数或您有更快的实现时。
    • @ncfirth tke scikit-learn k-means 预先计算数据集点之间的距离。在 scikit-learn k-means 执行期间如何使用这些距离?
    • 啊,原谅我,我把这个问题弄糊涂了,是关于内核方法而不是常规的 KMeans。
    • @MohammedKashif 我不明白您对预先计算的距离的回答。当我们需要为每个点找到最近的中心时,我们如何避免找到中心。你有什么公式可以找到只有预先计算的距离的中心吗?
    猜你喜欢
    • 2013-09-12
    • 2013-02-02
    • 2018-04-06
    • 2013-04-22
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 2019-06-01
    • 2012-04-09
    相关资源
    最近更新 更多