2014-11-16 69 views
0

對於數據挖掘競賽,我正在構建一個流失預測模型。我有一個帶有標籤和無測試數據集的訓練數據集。爲了建立我的模型,我使用了一些過濾器來預處理訓練數據集。我使用InterquartileRange,RemoveWithValuesRemoveAttributes過濾器(因爲InterquartileRange爲異常值和極值創建了新屬性)搜索並刪除了異常值和極值。Weka分類與訓練集中移除的實例

我知道Weka需要提供的測試集和訓練集具有相同的過濾器,但我需要測試集中的所有實例來查看預測得分。因此,我無法應用RemoveWithValues過濾器。由於這個原因,我得到了「測試和訓練集不兼容」。這個問題能解決嗎?總而言之,我想用一個建立在訓練集上的模型來獲取我的測試集的所有實例的分數,而沒有極端值和異常值。

回答

2

您似乎誤解了培訓和測試集的要求。至少從你認爲的角度來看,你不需要在測試和訓練集中應用相同的過濾器。但是,您必須應用相同的變換

訓練集和測試集必須兼容,即,必須具有相同的名稱和相同的型的相同的功能。 (理論上,測試集有可能具有更多的功能,但我不知道Weka如何處理這個問題。)讓我們將這個語法上稱爲兼容。

這通常可以通過應用相同的過濾器來實現,但不一定是這樣。例如,如果您應用將實例移除到訓練集的過濾器,則數據集的「格式」不會更改,您也不需要將其應用於測試集。

但是,應用相同的過濾器意味着您必須在訓練集上訓練過濾器,然後將其應用於測試集,否則最終會有兩個語法上兼容的數據集(Weka不會抱怨) ,但不是語義上兼容。例如,假設你有一個培訓和測試數據集的數字特徵

  • 訓練集有值:0,2,5,10
  • 測試集有值0,2,5
  • 您應用Normalize訓練集(規模到範圍[0,1])
  • 過濾的訓練不具有值:0.0,0.2,0.5,1.0
  • 應用相同的「訓練」過濾器,以測試設置:0.0,0.2,0.5
  • 如果您已經申請了新的Normalize過濾器測試儀,它會接着是:0.0,0.4,1.0
你的情況

所以,你一定是做了什麼,改變了測試和格式培訓設置不同。 (如果它們不太長,你可以在你的問題中發表。)


注:我被

我搜索並刪除了異常值和極端值

困惑,但事實證明這只是一個缺乏知識的我側。 「極端值」也是Weka說的例子,所以在那裏沒有問題。他們似乎是不是異常值的數據點,但這些數據點非常極端,以至於它們對學習模型和泛化過程的影響力過大。 (Source

我在這裏只是爲了提供信息。

+0

+1非常好的答案!也許最後的問題應該是評論。 – manlio

+0

@manlio你說得對,我會改變這一點 – Sentry

相關問題