【问题标题】:Suitability of cluster analysis [closed]聚类分析的适用性
【发布时间】:2014-11-21 10:39:34
【问题描述】:

我有大量对象,为此我计算了每对对象之间的 4% 差异。

例如: O1 和 O2 有区别:a12、b12、c12 和 d12,例如51、78、22、93。

我希望标记差异小于某个阈值的“关闭”对象。 (我还不知道这 4 项措施中的每一项有多“重要”。)

聚类分析是解决这个问题的合适方法吗?任何指向 Python 算法和初学者教程的指针都会非常有帮助。

【问题讨论】:

  • 这听起来不像聚类分析。您已经定义了目标:“连接”相似度低于阈值的对象。但是你说的很模糊,很难回答。

标签: python scipy cluster-analysis data-mining


【解决方案1】:

这可能不是聚类分析问题。

基本区别是您是通过某些连通性标准(这不是聚类)对所有点进行分组,还是算法是否根据数据本身动态确定聚类的标准(这是聚类)?强>

典型聚类分析的定义问题是聚类定义仅基于数据。也就是说,算法在同一进程中创建集群和这些集群的定义。或者,换一种说法,当你开始聚类时,你给算法提供了数据,但你没有给它一个阈值。

由于您已经有了阈值,因此这不是通常所说的聚类。即使您有多个阈值可供选择,也只需将数据分组,因为您的阈值将指示并比较分组。

这里的警告正是您所说的“阈值”以及您希望如何应用它。如果您想找到建立连接点链小于某个阈值的所有点,则不是聚类。相反,如果您希望阈值定义点之间的非线性度量,则将应用正常的聚类算法(尽管使用非常不寻常的度量 - 所以这可能不是您想要的方法)。

另一个需要注意的是,“集群”人们可以表示不同的东西,我想我使用的是通常的数据分析定义,当然人们也以其他方式使用这个词。例如,参见scipy.cluster 中的算法。


至于采取什么方法,到目前为止,您还没有描述足够的细节来回答这个问题。例如,您想用它们的中位数替换最近的对吗?还是遵循连接的邻居链?等等。也许像 KDTree 这样的东西对你有用。

【讨论】:

  • KDtree需要numerical数据;没有相似之处。但我同意这听起来不像是聚类分析问题。
  • @Anony-Mousse:当然,但完全不清楚 OPs 数据的数字形式是否不够(或者如果清楚,请实际解释)。如果您有更好的答案,请发布它,但我创造稻草人的意义何在?
  • 感谢 Tom10,这使它更加清晰。我想我会像例子一样尝试 Python 的 CKDTree 库,here
猜你喜欢
  • 2018-08-24
  • 2012-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-14
  • 2017-05-12
  • 2018-06-06
  • 1970-01-01
相关资源
最近更新 更多