最佳Python聚类库用于产品数据分析

7 投票
6 回答
13832 浏览
提问于 2025-04-16 11:51

我有一堆包含字母和数字的产品代码,这些代码对应着各种产品。相似的产品在它们的代码上并没有什么共同点,比如产品代码“A123”可能代表“哈利·波特第一卷DVD”,而“B123”可能代表“卡乐比玉米片”。而且我其实并不知道这些产品的具体描述或身份。我手里只有这些代码的“拥有者”。所以我的数据大致是这样的:

拥有者1: 产品代码 A123,B124,W555,M221,M556,127,102

拥有者2: 产品代码 D103,Z552,K112,L3254,223,112

拥有者3: 产品代码 G123

....

我有非常庞大的数据集(也就是几个TB)。

我假设一个拥有者通常会有若干组相似的产品,比如一个拥有者可能只有两组——所有的哈利·波特的DVD和书籍,还有一组“铁娘子”的CD。我想分析这些数据,找出产品代码之间的距离函数,这样我就可以开始推测产品代码之间的“相似程度”,并且对产品代码进行聚类(这样我也能识别出一个拥有者有多少组产品)。我已经开始研究一些文本聚类算法,但有很多种选择,我不太确定哪一种最适合这种情况。

有人能推荐一些适合的基于Python的聚类函数或库吗?

6 个回答

2

我觉得你可以使用pycluster来解决你的问题,也可以换个算法试试。

另外,我觉得你最好看看这个 关于用Python进行数据聚类的文章

2

R语言有很多工具可以帮助我们在数据中找到不同的组,具体可以查看这个链接。而且,Python也可以通过一种叫做RPy的方式来使用R的功能。R提供了几种算法,这些算法在这里已经提到过,并且在处理大数据时表现得非常不错。

8

你现在手里有的是一个二分图。简单来说,你可能会把邻居列表当成是零和一的向量,然后在这些向量之间定义某种相似性或相关性。比如,你可以用一种叫做归一化汉明距离的方式来计算。根据你选择的方式,你会得到一个只包含单一领域的图——要么是产品代码,要么是所有者。接下来我会解释为什么我用图的语言来描述这一切,请耐心等一下。你为什么一定要用Python来实现呢?处理大规模数据的聚类是非常耗时和占内存的。说到这里,我得告诉你,我写过并且仍在维护一个图聚类算法,这个算法在生物信息学中被广泛使用。它是多线程的,可以处理加权图,并且已经被用于处理有数百万个节点和接近十亿条边的图。想了解更多信息,可以查看http://micans.org/mcl/。当然,如果你在StackOverflow和StackExchange上搜索一下,会发现有很多相关的讨论线程。我还推荐你看看Louvain方法,不过我不确定它是否支持你可能会生成的加权网络。

撰写回答