gpt4 book ai didi

java - 如何解析特定的数据文件并对其内容进行聚类? java

转载 作者:行者123 更新时间:2023-11-30 11:41:09 25 4
gpt4 key购买 nike

我有一个文件,如下所示,

150 event4
160 event4
160 event0
170 event4
175 event4
180 event4
190 event4
192 event3
195 event4
----------
----------

第一列是相应事件实际发生的时间(以毫秒为单位)。所以 event4 发生在 150 毫秒内。

我有以下任务要做,

  1. 逐行遍历。

  2. 如果连续事件之间的间隔小于 80毫秒,它们是单个 Activity 的序列。

例如

100 event4
120 event5
140 event6
200 event4

他们都得到了不超过80毫秒的连续差异。如果相差超过 80 毫秒,则表示当前序列结束并开始新序列。我的目标是对序列进行聚类。并在不同的集群中报告特定事件的数量。因此,在集群 1 的以下示例中,事件 4 发生了 4 次,事件 5 发生了 1 次,事件 6 发生了 1 次。在第二个集群 event 4 3 次和 event5 1 次。

100 event4
120 event5
140 event6
200 event4

300 event4
320 event4
340 event4
400 event5

我现在做的是,

  1. 我列了一个字符串列表。我解析文件,并测量差距行之间如果小于 80 毫秒,我将它们添加到列表。
  2. 当我发现一个间隔超过 80 毫秒的事件时,我 停止添加并为下一个序列创建一个新列表。
  3. 在将所有序列放在不同的列表中之后,我然后遍历通过列表来衡量特定事件的数量。

我不知道这是不是一种有效的方法。我有一些问题。

  • 我不知道那边有多少序列簇,所以数量我想存储特定集群的列表不固定。
  • 事件名称不固定。它可以是 event1 到 event100 或 event1 到 45。因此,用于存储事件编号的变量数不是也固定了。

那么,小伙伴们还有什么好点子吗?

最佳答案

这不是科学上所说的“聚类”,而只是分组或聚合。您汇总事件,除非它们之间的时间间隔太长。

至于方法,您正在追求规范方法。除非您的数据已经在复杂的数据库索引中,否则您不能比线性做得更好。只要是文本文件,就只能线性读取了。

至于数据结构,将其组织为 ArrayList<ArrayList<String>> 并没有错或 ArrayList<HashMap<String, Integer>> ,因为事件 ID 是字符串。内存要求应该适中,并且可以扩展到千兆字节。如果您遇到内存问题,请尝试维护 HashSet<String>只保留每个事件字符串的一个副本,并将时间转换为数字数据类型。当事件足够少时,您应该能够加载几 GB。

实际上我没有看到任何重大挑战。

关于java - 如何解析特定的数据文件并对其内容进行聚类? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12377258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com