我們試圖從Java程序內實現WEKA分類器。到目前爲止,一切都很順利,但是當從Weka GUI的訓練集中構建分類器時,我們使用了StringToWordVector IDF變換來幫助提高分類準確性。WEKA - 分類來自Java的新數據 - IDF變換
對於新實例,從Java內部如何計算IDF變換,以在將實例傳遞給分類器之前爲新實例中的每個標記值設置?
基本的代碼如下所示:
Instances ins = vectorize(msg);
Instances unlabeled = new Instances(train,1);
Instance inst = new Instance(unlabeled.numAttributes());
String tmp = "";
for(int i=0; i < ins.numAttributes(); i++) {
tmp = ins.attribute(i).name();
if(unlabeled.attribute(tmp)!=null)
inst.setValue(unlabeled.attribute(tmp), 1.0); //TODO: Need to figure out the IDF transformed value to put here NOT 1!!
}
unlabeled.add(inst);
unlabeled.setClassIndex(classIdx);
.....cl.distributionForInstance(unlabeled.instance(i));
那麼,如何去了解編碼,這樣我在新的情況下我想分類把正確的價值?
只是要清楚inst.setValue(unlabeled.attribute(tmp), 1.0);
需要從1.0
以色列國防軍轉化數改了行......
任何幫助將不勝感激!
感謝您的意見。我不認爲這是我所追求的。我們有一個預先存在的分類器,我們想要加載,我嘗試這樣做,並使用FilteredClassifer的set方法,但它抱怨沒有輸出格式集。我猜它希望訓練數據作爲輸入...但是似乎沒有接口可以使用StringToWordVector – NightWolf
執行此操作,請參閱edits ..而不是對每個實例應用過濾器,以批處理模式應用過濾器。 – iinception