【问题标题】:Clustering 3D data with one nominal scale用一种标称尺度对 3D 数据进行聚类
【发布时间】:2019-09-01 21:50:54
【问题描述】:

问题陈述

我有 2D pandas 数据框,其中包含有关用户工具使用特征的数据(例如,系统 A 的使用率为 88%,系统 B 的使用率为 11%,系统 C 的使用率为 1%,用于各个用户:

        A      B       C
Usage  0,88   0,11   0,01

假设存在三个用户(ID:1、2、3),存在以下矩阵:

ID:1    A      B       C     ID:2    A      B      C     ID:3    A      B    C
Usage  0,88   0,11   0,01    Usage  0,86   0,13   0,01   Usage  0,00  0,00  1,00

我曾想过将单个 2D 矩阵聚合为 3D 矩阵,以识别具有相似使用行为的集群。

目标

识别系统使用中的集群。在这个例子中,ID1 和 ID2 应该是集群的。我构建了一个工作 DBSCAN method 用于聚类随机 2D 数据。

但是,我面临的问题是 2D 矩阵在聚合的 3D 矩阵中以固定顺序堆叠。因此,仅查看一个固定的标称序列时不可能识别相似性,因为基本上每个用户 2D 数据都必须与所有其他 2D 数据进行比较才能找到相似的使用行为。

想法

我想在机器学习中集成一种方法,有点 k 折交叉验证方法,用于小数据集。但是我不知道如何将这种行为集成到聚类算法中。

另一个想法可能是模式识别或层次聚类(尽管聚类总数未知) 是更好的方法,因为聚合 3D 矩阵的第三轴是标称比例(用户 ID)。但是,到目前为止,我在模式识别领域还没有经验。

也许有人有一个很好的方法来解决这个聚类问题。 :)

【问题讨论】:

  • 你能在不考虑用户 ID 的情况下只对特征 A、B 和 C 进行聚类吗?在您的示例中,您有 3 个用户,每个用户在相同比例的 3 个维度中都有一个位置,这似乎是聚类的完美输入。
  • @Pallie 我可以这样做,但我必须能够分辨出哪些用户彼此靠近并且属于同一个“使用集群”。你知道如何做到这一点吗?
  • 使用集群是您想要预测的,对吧?只需将数据插入到任何聚类算法中,看看哪种算法对预期结果有效。
  • 是的,没错!我想为此使用 DBSCAN。目前我正试图弄清楚如何将我的矩阵插入到 DBSCAN 示例中。但我无法弄清楚如何从引用的 DBSCAN 示例中输入 labels_true 变量。也许你有一个想法,因为我没有它的数据。它正在描述明显未知的基本事实类分配。 :D

标签: python algorithm 3d cluster-analysis pattern-recognition


【解决方案1】:

该示例使用labels_true 仅用于评估,而不是作为 DBSCAN 本身的输入。 labels_true 派生自创建模拟数据集的函数。调用 dbscan 的正确方法是 db = DBSCAN(eps=0.3, min_samples=10).fit(X) 其中 x 在您的情况下是 [[valueA, valueB, valueC], [valueA, valueB, valueC], ...] 结果在 db.labels_ 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-24
    • 2015-07-20
    • 2013-05-15
    • 2015-02-11
    • 2016-11-24
    • 1970-01-01
    • 2020-04-20
    • 2018-12-08
    相关资源
    最近更新 更多