Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析特定的数据文件并对其内容进行集群?JAVA_Java_String_Parsing_Pattern Matching_Cluster Analysis - Fatal编程技术网

如何解析特定的数据文件并对其内容进行集群?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毫秒内

我有以下任务要做

  • 逐行迭代

  • 如果连续事件之间的间隔小于80 毫秒,它们是单个活动的序列

  • 比如说

    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
    
    我现在做的是,

  • 我列了一个字符串列表。我解析文件,并测量间隙 线之间,如果小于80毫秒,我将它们添加到 名单
  • 当我发现一个间隔超过80毫秒的事件时 停止添加并为下一个序列创建新列表
  • 在不同的列表中有了所有的序列之后,我再遍历 通过列表来衡量特定事件的数量
  • 我不知道这是不是一个有效的方法。我有一些问题

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

    那么,你们还有什么好主意吗?

    这不是科学上所谓的“集群”,而是分组或聚合。除非时间间隔太长,否则将聚合事件

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

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


    实际上,我看不出这里有什么大的挑战。

    您的方法听起来一般都不错,但如果没有看到您的代码,就很难判断您是否正确实现了它。如果您只想“测量特定事件的数量”,您可能不需要实际将所有数据点存储在内存中,您可以处理每个组,然后将其丢弃。@JimGarrison实际上我还没有实现代码,只是分享了我的想法。感谢您的回复,我使用的数据结构或多或少是相同的。我只是想再想想是否能更好。