如何解析特定的数据文件并对其内容进行集群?JAVA
我有一个文件,如下所示如何解析特定的数据文件并对其内容进行集群?JAVA,java,string,parsing,pattern-matching,cluster-analysis,Java,String,Parsing,Pattern Matching,Cluster Analysis,我有一个文件,如下所示 150 event4 160 event4 160 event0 170 event4 175 event4 180 event4 190 event4 192 event3 195 event4 ---------- ---------- 第一列是相应事件实际发生的时间(毫秒)。因此,事件4发生在150毫秒内 我有以下任务要做 逐行迭代 如果连续事件之间的间隔小于80 毫秒,它们是单个活动的序列 比如说 100 event4 120 event5 140 event
150 event4
160 event4
160 event0
170 event4
175 event4
180 event4
190 event4
192 event3
195 event4
----------
----------
第一列是相应事件实际发生的时间(毫秒)。因此,事件4发生在150毫秒内
我有以下任务要做
100 event4
120 event5
140 event6
200 event4
它们都获得了不超过80毫秒的连续差分。
若差值超过80毫秒,则表示当前序列结束,新序列开始。
我的目标是对序列进行聚类。在不同的集群中报告特定事件的数量。因此,在集群1的以下示例中,事件4发生4次,事件5 1和事件6 1次。在第二个集群中,事件4 3次,事件5 1次
100 event4
120 event5
140 event6
200 event4
300 event4
320 event4
340 event4
400 event5
我现在做的是,
- 我不知道那里有多少个序列簇,所以数字 我想要存储特定集群的列表数量不是固定的李>
- 事件名称不是固定的。它可以是event1到event100或event 1至45。因此,用于存储事件编号的变量数量不是 也修复了
那么,你们还有什么好主意吗?这不是科学上所谓的“集群”,而是分组或聚合。除非时间间隔太长,否则将聚合事件 至于方法,您正在追求规范方法。除非您的数据已经在一个复杂的数据库索引中,否则您不能做得比线性更好。只要它是一个文本文件,除了线性读取外,没有其他方法 至于数据结构,将其组织为
ArrayList
或ArrayList
,没有什么错,因为事件ID是字符串。内存需求应适中,并可扩展到千兆字节。如果遇到内存问题,请尝试维护HashSet
,以仅保留每个事件字符串的一个副本,并将时间转换为数字数据类型。然后,当事件数量不足时,您应该能够加载几个GB
实际上,我看不出这里有什么大的挑战。您的方法听起来一般都不错,但如果没有看到您的代码,就很难判断您是否正确实现了它。如果您只想“测量特定事件的数量”,您可能不需要实际将所有数据点存储在内存中,您可以处理每个组,然后将其丢弃。@JimGarrison实际上我还没有实现代码,只是分享了我的想法。感谢您的回复,我使用的数据结构或多或少是相同的。我只是想再想想是否能更好。