algorithm - 如何有效地在二进制数据框中找到模式?
问题描述
假设我有一个像这样的二进制数据框:
[1,1,0,0,1,0
1,1,1,0,1,1
0,0,1,0,0,1
1,1,1,0,1,1
0,1,0,1,0,0
1,1,0,1,1,0]
我想提取在行之间重复最多的 1 的模式。在这个例子中,我想知道 [1,1,x,x,1,x] 经常出现,即有很多行这些特征一起出现。
执行此操作的最有效算法是什么?我实际上有一个包含约 4000 列和约 1M 行的数据框,因此任何蛮力方法都太低效了。
为简单起见,假设我只对行中最多 4 个这样的 1 的模式感兴趣。对 0 的模式不感兴趣,我的矩阵也很稀疏。
编辑:
多么稀疏 - 大约 1% 是 1。
这些模式会多久出现一次?- 我不知道......假设我只对至少出现一千次的模式感兴趣......这大约是我行数的 0.1%......
解决方案
推荐阅读
- android - 什么是具有高质量和高宽比的最佳图像缩放器(如电报或whatsapp 或...)?
- node.js - 使用 PG-Promise 和 PG-Query-Stream 高效地读取、操作和插入数据
- postgresql - PostgreSQL autovacuum 导致性能显着下降
- angular - 订阅 + forEach 问题
- matlab - 在 Matlab 中重新创建 Zadoff-Chu 的循环自相关图
- asp.net-mvc - 表单提交带有必填字段的 DropDownListFor
- hive - 无法从配置单元中的现有表创建视图
- c# - 有哪些方法可以优化非分代 GC 的标记阶段?
- php - stream_socket_sendto():连接被拒绝
- javascript - 更改属性时按钮未提交