2012-12-17 38 views
3

我想分類使用weka和樸素貝葉斯分類器的一些web帖子。Weka:列車和測試集不兼容

首先我手動分類很多帖子(約100陰性和陽性100),我創建了這個形式的.arff文件:

@relation classtest 
@attribute 'post' string 
@attribute 'class' {positive,negative} 
@data 
'RT @burnreporter: Google has now indexed over 30 trillion URLs. Wow. #LeWeb',positive 
'A special one for me Soundcloud at #LeWeb ',positive 
'RT @dianaurban: Lost Internet for 1/2 hour at a conference called #LeWeb. Ironic, yes?',negative 
    . 
    . 
    . 

然後我打開Weka的資源管理器加載該文件,並應用StringToWordVector篩選以分離單個詞屬性中的帖子。

然後,做同樣與我的數據集,選擇(在秧雞的分類標籤)naive bayes分類並選擇選擇測試集後,就返回Train and test set are not compatible。我能做什麼?謝謝!

回答

0

描述我的批處理過濾器,但仍然有問題。下面是我做的:

java命令/usr/share/java/weka.jar weka.filters.unsupervised.attribute.NumericToNominal -R最後-b -i trainData.arff -o trainDataProcessed.csv.arff - [R testData.arff -s testDataProcessed.csv.arff

然後我得到的錯誤如下:

輸入文件格式不同。

Later.I想出了兩種方法可以讓訓練好的模型在提供的測試集上工作。

方法1. 使用知識流。例如如下所示:CSVLoader(用於訓練集) - > classAssigner - > TrainingSetMaker - >(您選擇的分類器) - > ClassfierPerformanceEvaluator - TextViewer。 CSVLoader(用於測試集) - > classAssigner - > TestgSetMaker - >(與上面相同的分類器實例) - > PredictionAppender - > CSVSaver。然後從CSVLoader或arffLoder加載訓練集的數據。模型將被訓練。之後,從加載程序加載測試集的數據。它將評估提供的測試集中的模型(例如分類器),並且您可以查看textviewer(連接到ClassifierPerformanceEvaluator)的結果,並從CSVSaver或與PredictionAppender連接的arffSaver中獲取已保存的結果。附加列, 「分類爲」將被添加到輸出文件中。就我而言,我用「?」對於提供的測試集中的類列,如果類標籤不可用。

方法2. 將培訓和測試集合在一個文件中。然後,完全相同的過濾器可以應用於訓練和測試集。然後您可以通過應用實例過濾器來分離訓練集和測試集。由於我使用「?」作爲測試集中的類標籤。它在實例篩選器索引中不可見。因此,只需選擇在應用實例過濾器時可以在要刪除的屬性值中看到的那些索引。您將只獲得測試數據。保存並將其加載到分類器頁面的供應測試集中。此時它將工作。我想這是導致不兼容列車和測試集問題的類屬性。許多分類者需要名義類屬性。根據http://weka.wikispaces.com/Why+do+I+get+the+error+message+%27training+and+test+set+are+not+compatible%27%3F

將其值轉換爲索引到等級屬性的可用值