【问题标题】:Random Selection of 2D Vector Rows for Semi-Equalization of Certain Values随机选择二维向量行用于某些值的半均衡
【发布时间】:2016-12-09 11:45:46
【问题描述】:

不谈细节,我目前正在开发一个 Java 程序,该程序为 Ranking SVM 执行成对分类。

为了提供一些背景知识,我已将 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 >= tally <= 1 是否存在吗?抱歉,如果这完全没有达到目的,这个问题有点令人困惑。

标签: java random svm


【解决方案1】:

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

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

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

另一种方法:

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

【讨论】:

  • 非常感谢,科林。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
相关资源
最近更新 更多