我在Weka中有以下稀疏ARFF文件——我想使用Weka Java API从给定的稀疏ARFF(训练数据集)文件中构建一个分类器。程序正在读取文件[未引发任何异常],但无法读取实例。当我打印实例数时,程序打印为0。提前感谢您的投入。
@关系样本
@属性T1数字
@属性T2数字
@属性T3数字
@属性T4数字
@属性T5数字
@属性C1{0,1}
@数据
{0 3,1 2,2 1,6 1}
{3 3,4 2,6 0}
ArffLoader loader = new ArffLoader();
loader.setFile(new File("C:\SAMPLE-01.arff"));
Instances data = loader.getStructure();
data.setClassIndex(data.numAttributes() - 1);
System.out.println("Number of Attributes : " + data.numAttributes());
System.out.println("Number of Instances : " + data.numInstances());
我认为您的稀疏数据在ARFF文件中的格式不正确。应该是这样的:
@RELATION ample
@ATTRIBUTE T1 numeric
@ATTRIBUTE T2 numeric
@ATTRIBUTE T3 numeric
@ATTRIBUTE T4 numeric
@ATTRIBUTE T5 numeric
@ATTRIBUTE C1 {0, 1}
@DATA
{0 3, 1 2, 2 1, 5 1}
{3 3, 4 2, 5 0}
然后你可以使用一个看起来有点像我的类:
public class SO_Test {
DataSource source = null;
Instances data = null;
public void setDataset(String trainingFile){
try {
source = new DataSource(trainingFile);
} catch (Exception e) {
e.printStackTrace();
}
try {
data = source.getDataSet();
} catch (Exception e) {
e.printStackTrace();
}
if (data.classIndex() == -1)
data.setClassIndex(data.numAttributes() - 1);
}
public static void main(String[] args) throws Exception{
SO_Test s = new SO_Test();
s.setDataset("1.arff");
System.out.println("Number of Attributes : " + s.data.numAttributes());
System.out.println("Number of Instances : " + s.data.numInstances());
}
}