如何在“上运行predict()”;“预计算”;python中用于集群的数据

如何在“上运行predict()”;“预计算”;python中用于集群的数据,python,cluster-analysis,Python,Cluster Analysis,我有自己的预计算数据,用于在python中运行AP或Kmeans。但是,当我运行predict()时,我想对数据运行train()和test(),以查看集群对类或集群是否具有良好的准确性,Python告诉我predict()不适用于“预计算”数据 有没有其他方法可以在python中对集群数据运行训练/测试 大多数聚类算法,包括AP,都没有定义好的方法来“预测”新数据。K-means是为数不多的几个简单到允许“预测”与初始聚类一致的情况之一 现在,sklearn有一个奇怪之处,就是试图将所有内容压

我有自己的预计算数据,用于在python中运行AP或Kmeans。但是,当我运行predict()时,我想对数据运行train()和test(),以查看集群对类或集群是否具有良好的准确性,Python告诉我predict()不适用于“预计算”数据


有没有其他方法可以在python中对集群数据运行训练/测试

大多数聚类算法,包括AP,都没有定义好的方法来“预测”新数据。K-means是为数不多的几个简单到允许“预测”与初始聚类一致的情况之一

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

对于亲和传播,有人在某个时候决定添加一个基于k-means的
predict
:它总是预测最近的中心。仅可使用坐标数据计算平均值,因此该方法在公制=预计算时失败。 如果要复制此行为,请计算到所有群集中心的距离,然后选择argmin,仅此而已。使用“预计算”指标,您无法轻松地将其融入sklearn API。您可以要求用户将距离向量传递给预计算度量的所有“训练”示例,但只需要其中的几个

在我看来,我宁愿完全取消这种方法:

  • 我所知道的并不是关于亲和力传播的公开研究
  • 亲和传播基于相似性(“亲和性”)的概念,而不是距离或方式
  • predict
    将不会返回与AP标记的点相同的结果,因为AP使用“传播的责任”而不是最近的“中心”标记点。(当前sklearn实现可能正在丢失此信息…)
  • 无论如何,聚类方法没有一致的
    predict
    ——这不是必须的
  • 如果要进行这种预测,只需将聚类中心传递给最近邻分类器即可。这就是这里重新实现的,一个隐藏的NN分类器。因此,如果将预测作为第二步(分类),您将获得更大的灵活性
  • 请注意,进行任何测试序列拆分并不常见,因为您无论如何都不使用标签,并且只使用无监督的评估方法(如果有,因为这些方法有自己的一系列问题),如果有-您无法可靠地在此处进行“超参数优化”,但必须根据经验和人类查看数据来选择参数