2016-08-03 39 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