Python 使用一个标称比例对三维数据进行聚类

Python 使用一个标称比例对三维数据进行聚类,python,algorithm,3d,cluster-analysis,pattern-recognition,Python,Algorithm,3d,Cluster Analysis,Pattern Recognition,问题陈述 我有2D数据框,用于保存有关用户工具使用特征的数据(例如,对于各个用户,系统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

问题陈述

我有2D数据框,用于保存有关用户工具使用特征的数据(例如,对于各个用户,系统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应该集群。我构建了一个用于集群随机2D数据的工作环境

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

思想

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

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


也许有人有一个很好的方法来解决这个集群问题。

这个示例使用
标签\u true
仅用于评估,而不是作为DBSCAN本身的输入。
标签\u true
来自创建模拟数据集的函数。调用dbscan的正确方法是
db=dbscan(eps=0.3,min_samples=10)。fit(X)
在你的例子中,X是
[[valueA,valueB,valueC],[valueA,valueB,valueC],…]
结果是
db.labels.

你能在不考虑用户ID的情况下对特性A,B和C进行聚类吗?在您的示例中,您有3个用户,每个用户在3个维度上的位置相同,这似乎是聚类的完美输入。@Pallie我可以这样做,但我必须能够知道哪些用户彼此接近,属于同一个“使用群集”。你知道如何做到这一点吗?使用集群是你想要预测的,对吗?只需将数据插入任何聚类算法,看看哪种算法能很好地达到预期的结果。是的,没错!我想用DBSCAN。目前,我正试图找出如何将我的矩阵插入DBSCAN示例中。但我无法从引用的DBSCAN示例中找出如何输入
labels\u true
变量。也许你有个主意,因为我没有数据。它描述了地面真相课堂作业,这些作业显然是未知的D