python - 是否有任何受监督的聚类算法或将先验知识应用于聚类的方法?

标签 python machine-learning cluster-analysis unsupervised-learning supervised-learning

在我的例子中,我有一个在图像中检测到的字母和符号的数据集。 检测到的项目由它们的坐标、类型(字母、数字等)、值、方向而不是图像的实际边界框表示。我的目标是使用此数据集将它们分组到不同的“单词”或一般的上下文组。

到目前为止,我通过应用经典的无监督聚类,使用 DBSCAN 算法取得了不错的结果,但这仍然太受样本几何距离的限制,因此生成的组与我想要的“词”不相似. 因此,我正在寻找一种方法,利用我所掌握的关于所需聚类的“类词”性质的知识来影响聚类算法的结果。

我认为我的可能方法是创建一个包含真假聚类的数据集,并训练一个 SVM 模型(或任何分类器)来检测建议的聚类是否正确。但仍然为此,我没有确凿的证据证明我可以很好地训练模型来区分好集群和坏集群,而且我发现很难根据集群成员的特征高效且一致地表示集群。此外,由于我的“测试数据”将包含大量我拥有的字母和符号的所有可能组合,因此整个方法似乎有点过于复杂,无法在没有任何证据或迹象表明它最终会起作用的情况下尝试实现它.

总而言之,我的问题是,是否有人以前有过此类任务的经验(在我看来这听起来很简单,但显然不是)。 您是否知道任何受监督的聚类算法?如果知道,哪种是表示数据集群的正确方法,以便您可以使用它们有效地训练模型?

任何关于我可以在哪里研究它的想法/建议甚至暗示都将不胜感激。

最佳答案

有关于监督聚类的论文。一个漂亮、清晰的是 Eick et al. ,这是免费提供的。不幸的是,我认为 python 中没有任何现成的库支持这一点。还有this在特定的文本领域,但与 Eick 相比,它是一种更特定于领域的方法。

但是有一个非常简单的解决方案,它实际上是一种受监督的聚类。决策树本质上是将特征空间分割成高纯度区域,或者至少尝试这样做。因此,您可以将此作为一种快速的监督聚类:

  1. 使用标签数据创建决策树。
  2. 将每片叶子想象成一个“簇”。

在 sklearn 中,您可以使用 apply() 方法检索决策树的叶子。

关于python - 是否有任何受监督的聚类算法或将先验知识应用于聚类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59093163/

相关文章:

python - 如何加速分析 NumPy 代码 - 矢量化,Numba?

java - 从头开始实现自定义凝聚算法

python - 如何使 fcluster 返回与 cut_tree 相同的输出?

python - HDBSCAN 和近似预测的问题

r - 我可以优化 `caret` 中的中值相对绝对误差吗?

python - boto3 file_upload 是否检查文件是否存在

python - 我怎样才能让用户有可能编写脚本(以安全的方式)?

python - 如何防止 Google Colab 断开连接?

python - 使用 matplotlib 在 Python 中绘制颜色不匹配的相关图

python - tensorflow 错误 : Attempting to use uninitialized value multi_rnn_cell