2014-03-12 31 views
2

我正在爲Map Reduce中的每個數據集製作SVM模型(我正在使用LibSVM庫)。甚至,我有每個模型的測試結果。 測試結果文件包含以下詳細信息。(IT吉文斯預測有關測試結果)合成支持向量機在地圖中減少

+1 
-1 
+1 
+1 
.. 
.. 
+1 

我有這樣5測試文件。現在我想結合使用多數投票的測試結果在地圖縮小。 在地圖階段,我想把行號作爲鍵的值。如何在所有測試文件中將行號作爲地圖階段的值。

+0

這是一個需求,或者你認爲這將是解決方案的一部分嗎?因爲我不認爲你需要線路號碼。你只需要總結所有這些數字我猜,如果積極+1勝。對? – vefthym

+0

支持向量機一般不太適合用於裝袋合奏,因爲它們缺乏多樣性。在具有傾向於過度裝備的腸內分類器在裝袋時傾向於表現更好。以下討論對集合分類器中的問題進行了很好的討論:http://www.sandia.gov/~wpk/avi/avatar-tools-background-video.avi –

回答

1

我不知道您是否需要MapReduce來完成此任務,但是如果您確實需要在MapReduce中執行此操作,則只需使用Map-only作業,甚至不需要輸出文件即可。只需使用兩個計數器(我沒有發現decrCounter方法和incrCounter不能取負值)。這裏是一個簡單的僞代碼:

enum MyCounter = {POSITIVES, NEGATIVES}; 
map(LongWritable key, Text value, Reporter reporter) { 
    if (value.toString().equals("+1")) { 
     reporter.incrCounter(MyCounter.POSITIVES, 1); 
    } else { 
     reporter.incrCounter(MyCounter.NEGATIVES, 1); 
    } 
} 

然後,如果POSITIVES > NEGATIVES,+1勝!

如果你不需要MapReduce,你可以只計算所有文件的行數,例如:在Linux中使用wc -l命令,然後對具有+1的行進行計數,例如,使用grep -c