How could I transfer what I've got to this format?
這是我會怎麼做這個屬性來檢查您正在使用(或它的來源),看工具的文檔,如果你可以用一個稀疏的格式。我將使用您需要的腳本來計算訓練集中每封郵件的字數。然後,使用另一個腳本並將該數據轉換爲您之前顯示的LIBSVM格式。 (這可以通過多種方式完成,但使用像Python這樣簡單的輸入/輸出語言編寫應該是合理的)我會將所有「好郵件」數據批量加入到一個文件中,並將該類標記爲「1」 。然後,我會對「垃圾郵件」數據進行相同的處理,並標記該類爲「-1」。正如nologin所說,LIBSVM要求類別標籤在特徵之前,但是特徵本身可以是任何數字,例如,只要它們以升序(例如, 2:5 3:6 5:9被允許,但不是3:23 1:3 7:343。
如果您擔心您的數據是不正確的格式,用自己的腳本
checkdata.py
訓練之前,它應該報告任何可能的錯誤。
一旦你有了正確的格式數據的兩個獨立的文件,你可以叫
cat file_good file_spam > file_training
,並生成一個包含上好的和垃圾郵件數據的培訓檔案。然後,使用測試集執行相同的過程。以這種方式形成數據的一個心理優勢是,您知道培訓(或測試)集中的前700(或300)個郵件是好郵件,其餘是垃圾郵件。這樣可以更輕鬆地創建其他可能需要處理數據的腳本,例如精度/回調代碼。
如果您還有其他問題,http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html的常見問題應該能夠回答幾個問題,以及安裝時隨附的各種自述文件。(我親自在「工具」和「Python」目錄中找到自述文件,這是一個很大的好處。)不幸的是,常見問題解答並沒有涉及nologin所說的關於數據稀疏格式的內容。
最後一點,我懷疑你需要保留郵件中可能出現的每個可能單詞的計數。我建議只計算你會懷疑在垃圾郵件中出現的最常見的詞。其他潛在功能包括總字數,平均字長,平均句長以及其他可能有用的數據。