如何在java代码中使用weka中的日期类型?

时间:2013-11-03 22:34:57

标签: java weka

我正在尝试使用一个日期属性和一个数字属性创建训练实例。由于我的日期值,我收到错误。 错误是: java.lang.IllegalArgumentException:属性既不是名义也不是字符串!

我想我不明白如何处理这种格式。我已经搜索了很多,但所有的例子都是关于在arff文件中使用它,我找不到任何java代码的例子。如果你能告诉我哪里出错了,或者给我发一些可以指导我解决这个问题的链接,我将非常感激。

以下是代码:

    Attribute dateTimeAttribute = new Attribute("dateTime","yyyy-MM-dd HH:mm:ss");
    Attribute valueAttribute = new Attribute("value");

    FastVector fvWekaAttributesLinear = new FastVector(2);  

    fvWekaAttributesLinear.addElement(dateTimeAttribute);
    fvWekaAttributesLinear.addElement(valueAttribute); 

    Instances isTrainingSet = new Instances("Relation", fvWekaAttributesLinear, 100000); 
    isTrainingSet.setClassIndex(1);

    Instance ins = new Instance(2);

    ins.setValue((Attribute)fvWekaAttributesLinear.elementAt(0), "2009-07-15 10:00:00");


    ins.setValue((Attribute)fvWekaAttributesLinear.elementAt(1), 0.5); 

1 个答案:

答案 0 :(得分:3)

这就是我解决问题的方法:

    Attribute dateTimeAttribute = new Attribute("dateTime","yyyy-MM-dd HH:mm");
    Attribute valueAttribute = new Attribute("value");

    FastVector fvWekaAttributesLinear = new FastVector(2);          
    fvWekaAttributesLinear.addElement(dateTimeAttribute);
    fvWekaAttributesLinear.addElement(valueAttribute); 

    Instances isTrainingSet = new Instances("Relation", fvWekaAttributesLinear, 100000);
    double[] attValues = new double[isTrainingSet.numAttributes()];

    attValues[0] = isTrainingSet.attribute("dateTime").parseDate("2009-07-15 10:00");
    attValues[1] = 0.5;

这是我发现有用的链接: http://zitnik.si/wordpress/2011/09/25/quick-intro-to-weka/