2016-08-03 53 views
1

不放过细节的半均衡,我目前工作的执行成对分级排名SVM的Java程序。从CSV二维矢量的随机选择行的某些价值观

给予一定的背景,我已经阅读文件内容到二维字符串数组列表,进行二维数组列表上的所有必要的计算,并需要写回CSV文件。

但是,数据回写到空白CSV文件之前,还有最后一个步骤。每行的最后一个单元格包含两个值之一 - “1”或“-1”。我的目标是确保将数据写回到文件中,以便在包含“1”或“ - ”的最后一个单元格中存在相同数量的数据行(或者在1的范围内) 1“,如果这是有道理的。

提供一些例子,这里将被回写到文件中的两个可接受的结果:

[10 20 30 -1] 
[12 13 14 1] 
[12 13 14 -1] 
[34 35 36 1] 

[10 20 30 -1] 
[12 13 14 1] 
[12 13 14 -1] 
[34 35 36 1] 
[20 34 35 -1] 

正如你所看到的,在第一个例子,有一个关于每行的最后一个单元的行的均等分布是“1”或“-1”,并且其次是行的分布,使得存在“ -1“或”1“在最后一个单元中相差仅为1.这些都是可以接受的。

所以,我在想,如果有人可以提供我的,我怎么能去这样做的一些想法?我现在想的是为索引器创建一个随机数生成器,该索引器连续包含基于此随机索引的行,并跟踪最后一个单元格中包含“1”或“-1”的行数当我的最终结果中包含一定数量的随机行时停止,以便满足我的相等/几乎相等的分配标准。但是我不太确定如何设置代码来完成此操作。

谢谢大家,请让我知道如果我能提供任何更多的细节会有所帮助。

+0

难道你不能只是将每行的最后一个索引添加到正在运行的计数器中,并且在完成所有工作之后*不能只检查是否-1 = =计数<= 1'?对不起,如果这完全忽略了这个标记,这个问题有点令人困惑。 –

回答

1

没有必要随机在这里,你可以做类似如下的内容:

保持2个指针。一个用于+1,一个用于-1。

  1. 输出+1,然后递增该索引,直到找到以+1结尾的另一行。
  2. 输出-1,然后增加该索引,直到找到以-1结尾的另一行。
  3. 重复步骤1.直到你的指针之一不能增加。

另一种方法:

创建2套。一个包含+1的行号,另一个包含-1的行号。每组从一行开始交替输出。

+0

非常感谢科林。 – BK201