我正在嘗試編寫一個調用Weka中的CfsSubsetEval類來執行特徵子集選擇的java程序。 CfsSubsetEval分離數據集,我試圖避免這種情況,因爲數據集已經離散化了。以下是執行離散化的CfsSubsetEval.java中的行。在Weka中,如何停止離散化訓練實例的CfsSubsetEval?
m_isNumeric = m_trainInstances.attribute(m_classIndex).isNumeric();
if (!m_isNumeric)
{
m_disTransform = new Discretize();
m_disTransform.setUseBetterEncoding(true);
m_disTransform.setInputFormat(m_trainInstances);
m_trainInstances = Filter.useFilter(m_trainInstances, m_disTransform);
}
由於類屬性在ARFF文件定義如下:
@ATTRIBUTE class {true,false}
屬性不是數字,因此進行離散化。
儘管我對Weka實現有一些瞭解,但我試圖將這些行註釋掉以避免離散化。但是,它沒有工作,但以下情況除外報道:
java.lang.ArrayIndexOutOfBoundsException: 1
at weka.attributeSelection.CfsSubsetEval.symmUncertCorr(CfsSubsetEval.java:515)
at weka.attributeSelection.CfsSubsetEval.correlate(CfsSubsetEval.java:445)
at weka.attributeSelection.CfsSubsetEval.evaluateSubset(CfsSubsetEval.java:392)
at weka.attributeSelection.BestFirst.search(BestFirst.java:806)
at weka.attributeSelection.AttributeSelection.SelectAttributes(AttributeSelection.java:606)
at selecting_features.runFeatureSelection.main(runFeatureSelection.java:39)
的問題是:我怎麼能更改CfsSubsetEval.java所以它不會discretise數據集?
您的幫助深表謝意。
非常感謝。 – user52732 2014-11-05 08:50:09