使用J48樹時出現了奇怪的結果。我需要對48個特徵向量進行分類,效果很好,但是當我試圖「優化」時,我遇到了奇怪的結果。奇怪的weka實例結果
我有一個方法分類:
public boolean classify(double feature1, double feature2, double[] featureVec) {
Instance toBeClassified = new Instance(2+featureVec.length);
toBeClassified.setValue(0, feature1);
toBeClassified.setValue(1, feature2);
for (int i = 2; i < f.length + 2; ++i) {
toBeClassified.setValue(i, featureVec [i - 2]);
}
toBeClassified.setDataset(dataset);
try {
double _class = tree.classifyInstance(toBeClassified);
return _class > 0;
} catch (Exception e1) {
if(Logging.active) {
logger.error(e1.getMessage(), e1.getCause());}
}
return false;
}
}
它工作得很好,我希望我做的事情吧。但是我想刪除每次方法調用時創建的實例創建,所以我將實例移動到了BeClassified = new Instance(48);進入類體 - 因此它只創建一次。儘管事實證明我的結果與另一個結果略有不同,但這種結果也很好。可以說,從400個分類中,一個是不同的(不是說,不正確)。但我沒有看到這個原因......我希望這裏有一些人使用weka,以便我明白髮生了什麼事情/錯誤。 (是的,2 + featureVec.length是48)。
感謝和問候。
對於同一個數據集上的同一個例子,您是否一致地通過兩種方法獲得相同的不同分類? – Brabster 2010-08-04 19:17:16
另外 - 雖然我很想知道爲什麼會看到差異 - Weka文檔http://weka.sourceforge.net/doc/建議創建新實例可能會更快,而不是修改現有的實例。假設您正在尋找最佳性能,您是否定時/分析了這兩種方法,並發現哪種方法更快? – Brabster 2010-08-04 19:21:45
@Brabster是的,即時尋找性能,但也爲「我喜歡它」。我還在測量它,但我明天可以回到工作崗位上。是的,這是一貫的,如果我只是改變實例創建的方式,我總是會得到不同的結果。 – InsertNickHere 2010-08-04 19:55:07