我在Weka中有以下稀疏ARFF文件 - 我想使用Weka Java API从给定的稀疏ARFF文件(训练数据集)构建分类器。该程序正在读取文件[不抛出任何异常]但无法读取实例。当我打印实例数时 - 程序打印为0.提前感谢输入。
@RELATION ample
@ATTRIBUTE T1数字
@ATTRIBUTE T2数字
@ATTRIBUTE T3数字
@ATTRIBUTE T4数字
@ATTRIBUTE T5数字
@ATTRIBUTE C1 {0,1}
@DATA
{0 3 1,2 2 2,1 1 6}
{3 3,4 2,4 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());
答案 0 :(得分:0)
我相信您的稀疏数据未在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());
}
}