首页 > 解决方案 > 是否有一种有效的算法来聚类大数据数组

问题描述

我有一个 csv,我想用 python 阅读它。这个csv有两列,一列是客户的名字,另一列是他们的年龄,我想根据他们的年龄对客户进行分组。但是,在这个 csv 中有 10^9 行。所以,我必须使用有效的算法来完成这项工作,而不是读取所有行,有没有办法做到这一点?

标签: pythonbigdata

解决方案


我想您是在问如何在不一次将所有行读入内存的情况下对数据进行聚类。

一种想法是使用两阶段方法进行聚类:

首先,使用数据的样本(随机子集)定义您的集群。例如,您可以随机选择 1,000 条记录(或其他一些合理的值),然后查看您需要多少个集群以及集群中心。您可以多次重复此过程,直到您对集群感到满意为止。

其次,由于现在您有了集群中心,您可以将每个客户“分配”到他们适当的集群(即使用最近的集群中心)。您可以为每条记录一个接一个地执行此操作,也可以方便地分批执行此操作,因为无需一次完成所有操作。如果您不必立即对所有记录进行聚类,您甚至可以“懒惰地”(仅在需要时)执行此分配。

这样您就不必一次将大量记录加载到内存中。


推荐阅读