随机选择用于某些值的半均衡的2D矢量行

时间:2016-08-03 16:20:27

标签: java random svm

保留细节,我目前正致力于为排名SVM执行成对分类的Java程序。

为了给出一些背景知识,我已经将CSV文件中的内容读取到2D字符串数组列表,在2D数组列表上执行了所有必要的计算,并需要将其写回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”的行数,仅当我的最终结果中包含一定数量的随机行时停止,以便满足我的相等/几乎相等分布的标准。但是,我不太确定如何设置代码来执行此操作。

谢谢,如果我能提供任何有用的细节,请告诉我。

1 个答案:

答案 0 :(得分:1)

这里不需要随机化,你可以做类似以下的事情:

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

  1. 输出+1,然后递增该索引,直到找到另一行以+1结尾。
  2. 输出-1,然后递增该索引,直到找到另一行以-1结尾。
  3. 重复步骤1.直到你的一个指针无法递增。
  4. 另一种方法:

    创建2套。一个包含+1的行号,另一个包含-1的行号。通过从每组中取一行来交替输出。