python - 如何在Python中对 "precomputed"数据运行predict()进行聚类

标签 python cluster-analysis

我有自己的预计算数据,用于在 python 中运行 AP 或 Kmeans。然而,当我去运行 Predict() 时,因为我想对数据运行 train() 和 test() 以查看聚类在类或聚类上是否具有良好的准确性,Python 告诉我,predict() 不是可用于“预先计算”的数据。

是否有另一种方法可以在 python 中对集群数据运行训练/测试?

最佳答案

大多数聚类算法(包括 AP)没有明确定义的方法来“预测”新数据。 K 均值是少数足够简单以允许与初始聚类一致的“预测”的情况之一。

现在 sklearn 有一种奇怪的现象,即试图将所有内容压缩到受监督的 API 中。聚类算法具有 fit(X, y) 方法,但忽略 y,并且应该具有 predict 方法,即使 算法没有这样的能力。

对于亲和性传播,有人在某个时候决定添加一个基于 k 均值的预测:它始终预测最近的中心。只能使用坐标数据计算平均值,因此该方法因 metric=precompulated 而失败。 如果您想复制此行为,请计算到所有聚类中心的距离,然后选择 argmin,仅此而已。您无法使用“预先计算”指标轻松地将其放入 sklearn API 中。您可以要求用户将距离向量传递给所有“训练”示例以获取预先计算的指标,但只需要其中的一小部分......

在我看来,我宁愿完全删除这个方法:

  1. 据我所知,在已发表的亲和性传播研究中并未发现
  2. 亲和性传播基于相似性(“亲和性”)概念,而不是距离或手段
  3. 预测不会返回与AP标记的点相同的结果,因为AP使用“传播责任”而不是最近的“中心”。 (当前的 sklearn 实现可能会丢失此信息......)
  4. 无论如何,聚类方法都没有一致的预测 - 这并不是必需的。
  5. 如果您想进行这种预测,只需将聚类中心传递给最近邻分类器即可。这就是这里重新实现的,一个隐藏的神经网络分类器。因此,如果您将预测作为第二步(分类),您将获得更大的灵活性。

请注意,它的聚类常见于进行任何测试训练分割,因为无论如何您都不使用标签,并且仅使用无监督评估方法(如果有的话,因为这些方法)有他们自己的一系列问题)如果有的话 - 你不能在这里可靠地进行“超参数优化”,但必须根据经验和查看数据的人员来选择参数。

关于python - 如何在Python中对 "precomputed"数据运行predict()进行聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54842990/

相关文章:

matlab - 如何在二进制 3D 图像中找到簇?

machine-learning - K-means 文档聚类 - 接下来做什么?

python-3.x - sklearn - PCA 的标签点

python - DBSCAN 中的替代相似性度量?

python - 使用 Eager Execution 优化向量

python - 尝试编写 Python 脚本来删除重复的字体 Mac OSX

python - 查找落入范围内的值

python - 从两个数组创建 numpy 数组,这样备用索引包含来自不同数组的元素

r - 执行双聚类(行和列)后如何在 heatmap.2 上添加 ColSideColors

python - Perl 中 $1 的 Python 等价物是什么,或者正则表达式中的任何其他特殊变量?