2013-08-20 26 views
7

我正在嘗試使用SVM光來構建分類器,該類將兩個類中的一個文檔分類。我已經對分類器進行了培訓和測試,並將模型文件保存到磁盤。現在我想使用這個模型文件來分類全新的文檔。輸入文件格式應該是什麼?它可能是純文本文件(我認爲這不會起作用),或者可能只是簡單列出了文本文件中沒有任何類別標籤和特徵權重的特徵(在這種情況下,我必須跟蹤訓練期間的特徵向量中的特徵)還是其他格式?使用SVM光進行分類的文件格式

回答

6

訓練和測試文件必須是相同的格式,每個實例的結果一列的形式如下:

<line> .=. <target> <feature>:<value> ... <feature>:<value> # <info> 
<target> .=. +1 | -1 | 0 | <float> 
<feature> .=. <integer> | "qid" 
<value> .=. <float> 
<info> .=. <string> 

例如(來自SVM ^光網站拷貝麪食):

-1 1:0.43 3:0.12 9284:0.2 # abcdef 

有關更多信息,請參閱SVM^light website

+0

Marc我不想在這裏「測試」分類器。我想現在使用它來分類完全未知的文檔的實際目的。在「測試」文件中,我知道文檔所屬的類,因此我可以相應地準備文件。當我試圖做一個「真正的」分類時,我不知道文檔和特徵值的類別(可以說如果我在訓練和測試階段使用tf-idf值,那麼如果它是沒有idf值的話一個完全未知的文件)。那麼文件的格式是什麼呢? – ritesh

+0

@ritesh使用分類器通常稱爲*測試階段*,即使您對評估其準確性不感興趣。您可以省略第一列(不確定SVM^light是否允許這樣做,我知道libsvm會這樣做),或者在那裏使用您選擇的值(絕對有效)。標籤僅用於報告準確性。所以,如果你沒有他們,只需使用你最喜歡的號碼,但要知道,任何報告的準確性是完全虛假的。 –

+0

我必須承認我現在很困惑。比方說,我把任何數字放在第一列(而不是類標籤)。但是,那麼如何計算特徵值[格式爲' .... ']?對於培訓,我使用tf-idf和班級頻率來計算此值,該值考慮到培訓文檔的總數以及本文檔所屬班級的培訓文檔總數。對於測試來說,這可能是以與訓練中使用的方式不同的方式計算的值?如果是的話,這個值可能是什麼? – ritesh

0

文件格式進行預測是一樣的一個使測試和火車,即

<line> .=. <target> <feature>:<value> ... <feature>:<value> # <info> 
<target> .=. +1 | -1 | 0 | <float> 
<feature> .=. <integer> | "qid" 
<value> .=. <float> 
<info> .=. <string> 

但是,爲了使預測目標是不明,因此必須使用0值作爲目標。這是唯一的區別。我希望這可以幫助別人