1. 程式人生 > >資料探勘 文字分類 (八)訓練和測試

資料探勘 文字分類 (八)訓練和測試

         今天來個大結局吧,我們有了chi值或者TF-IDF值以後,就可以拿他們用lib-svm工具進行訓練了。

         當然我們還要對資料進行一些標準化處理,我們需要將某詞與該詞對應的值作為一個向量處理,這個就是特徵向量了。

         舉個例子,我們得到的某個文本里有一個這樣的值:汽車   3456.2314    。

         其實這就是一個二維的特徵向量,我們可以把文字編號比如“汽車”記為1,那麼這個向量就是 1:3456.2314 。

         如果再加上該文字屬於某一類這個維度,假設汽車這個詞是第一類,向量就變成三維的了:1 1:3456.2341 。

         之所以表示成這樣的形式,是lib-svm工具介面接受的資料形式。

         我們每一類文章計算完特徵值的時候,還是分在1000篇左右的文本里的,我們需要取出來一部分來代表這類文字,可以每篇取2000個,1000個,甚至500或者300個,這個取決於文字的大小等各種因素。

         這樣我們把每一類的前300(假設每個文字取300個)個特徵值最大的詞取出來放到一個文本里,去重,大概剩2000多個詞,這個就叫資料字典了。

         比如第一類文字可能是這樣:1   1:3456.2341

                                                             1   2:3234.2211

                                                             1   3:344.4356

         第一列數字是告訴訓練工具這個詞是來自哪一類,第二列就是對應的該類特徵值比較大的詞語編號了,第三列則是該詞對應的特徵值。

         我們把每一類都做同樣的處理,這樣libsvm工具就能正確的來處理這些資料了。
         開啟libsvm工具包,可以看到windows目錄下是這樣的:

       

我們可以把之前生成的dict.txt 檔案放到該目錄下,然後用svm-train.exe訓練文字。

操作命令如下:

當然,這個訓練工具提供了很多的引數可調,這裡我們就不管了,全部預設引數。操作命令裡不加任何調引數的命令,train.model就是訓練完生成的模型檔案,儲存在lib-svm目錄下的Windows目錄下。

然後我們呢可以用同樣的處理方式把訓練集處理一遍,生成test.txt(text.txt檔案形式與內容幾乎都跟dict.txt一樣,只不過dict是由訓練集通過一系列操作生成,而test.txt由測試集經過同樣的步驟生成)檔案,這樣我們就可以去預測了。

命令列如下:

 

這樣,整體的分類準確度就直接給出來了。

我們可以根據output檔案自己統計每一類的準確率和召回率。