2012-08-07 55 views
2

我正嘗試使用本機貝葉斯分類器來檢測欺詐事務。我在excel表格中有一個大約5000的樣本數據,這是我用來訓練分類器的數據,我有大約1000的測試數據,我將應用測試分類器。使用Mahout原生貝葉斯分類器算法需要哪些步驟?

這裏我的問題是,我不知道如何訓練分類器。在將其傳遞給訓練分類器之前,是否需要將我的訓練數據轉換爲某種特定的格式?訓練分類器將如何知道哪些是我的目標值以及哪些是其特徵。

有人可以幫我嗎?

+0

我知道這是相當古老的帖子,但仍然,你是否能夠解決這個問題。如果是,你可以分享你是如何管理它的?謝謝 – user667022 2013-11-20 10:39:30

回答

8

爲了測試您的數據,您需要確保您的培訓集有一些標籤,或者根據您在數據收集集中使用的某些功能將其劃分爲塊。我不確定你是如何組織數據的,但是你需要將你的數據集分成幾塊相似的特徵。

根據您的條件創建拆分後,請檢查輸入數據的創建。您可以使用驗證文件:

$MAHOUT_HOME/bin/mahout trainclassifier -i input_file -o output_model 

測試使用的分類:

$MAHOUT_HOME/bin/mahout testclassifier -m output_model -d input_file 

注:

hadoop fs -ls filename 

使用訓練分類請注意,數據收集過程中,你需要確保您爲某些數據值(如果它們存在)分配權重。在實驗設置或數據收集期間,還必須完成數據清理以正常化錯誤。您可以使用任何乘法散點校正技術來修正數據集。

首先,有一個名爲training-categories.txt的文件,其中包含您的分類器的類別。您可以使用簡單的文本編輯器來執行此操作。

現在我們有一個我們感興趣的類別列表,使用類別列表運行ExtractTrainingData類。

$TT_HOME/bin/tt extractTrainingData \ 
--dir ./index \ 
--categories ./training-categories.txt \ 
--output ./category-bayes-data \ 
--category-fields categoryFacet,source \ 
--text-fields title,description \ 
--tv 

該命令將讀取文檔並搜索類別和源字段中的匹配類別。在其中一個文檔中找到training-categories.txt中列出的其中一個類別時,將從存儲在標題和說明字段中的術語向量中提取術語。這些條款將被寫入category-bayes-data目錄中的文件。每個類別都會有一個文件。每個都是純文本文件,可以使用任何文本編輯器或顯示實用程序進行查看。

類別名稱出現在第一列中,而出現在文檔中的每個術語都包含在第二列中。 Mahout Bayes分類器期望輸入字段被阻止,所以您會看到這反映在測試數據中。數據命令extractTraining--tv參數會導致使用每個文檔的術語 向量中的詞幹術語。

ExtractTrainingData類已完成運行時,它將輸出在每個類別中找到的文檔的計數。

+0

你可以舉一個例子來說明如何在訓練數據上創建標籤,或者如何將它分成塊,以便它可以與mahout訓練分類器一起使用? 比方說,我的訓練數據是: 是5 4 20 是2 4 8 是1 7 7 沒有3 8 23 沒有7 8 90 現在應該怎麼我的訓練數據應該看起來像這樣它可以與mahout分類器一起使用? – Prasad 2012-08-14 05:28:55

+0

我已經更新了我的答案。 – 2012-08-14 06:07:28

+0

您已使用腳本/程序名稱tt將輸入轉換爲所需的格式。這是你寫的程序嗎?如果是這樣,你可以附上來源? – Hashken 2013-04-26 11:36:38