python - 是否有一种有效的算法来聚类大数据数组
问题描述
我有一个 csv,我想用 python 阅读它。这个csv有两列,一列是客户的名字,另一列是他们的年龄,我想根据他们的年龄对客户进行分组。但是,在这个 csv 中有 10^9 行。所以,我必须使用有效的算法来完成这项工作,而不是读取所有行,有没有办法做到这一点?
解决方案
我想您是在问如何在不一次将所有行读入内存的情况下对数据进行聚类。
一种想法是使用两阶段方法进行聚类:
首先,使用数据的样本(随机子集)定义您的集群。例如,您可以随机选择 1,000 条记录(或其他一些合理的值),然后查看您需要多少个集群以及集群中心。您可以多次重复此过程,直到您对集群感到满意为止。
其次,由于现在您有了集群中心,您可以将每个客户“分配”到他们适当的集群(即使用最近的集群中心)。您可以为每条记录一个接一个地执行此操作,也可以方便地分批执行此操作,因为无需一次完成所有操作。如果您不必立即对所有记录进行聚类,您甚至可以“懒惰地”(仅在需要时)执行此分配。
这样您就不必一次将大量记录加载到内存中。
推荐阅读
- c++ - 创建最多 10^12 的数组
- javascript - 在 JS 数组中创建索引
- node.js - Node.js Mongodb GraphQL - 突变和查询
- arrays - 使用 PowerShell 将 CSV 导入可变大小的二维数组
- node.js - npm-debug 模块:如何以编程方式启用和禁用调试目标?
- discord.js - console.log 消息所有者的显示名称时出错
- r - setDefaultClusterOptions 中的错误(type = .sfOption$type):找不到函数“setDefaultClusterOptions”
- python - python中带有变量的多项式的双积分
- swift - 我收到错误消息 @escaping 属性仅适用于函数类型,即使它以前有效
- typescript - 如何在忽略所有错误的情况下编译 TypeScript 项目?