Weka[Scala]中分类器更新不一致

Weka[Scala]中分类器更新不一致,scala,machine-learning,nlp,weka,Scala,Machine Learning,Nlp,Weka,我正在同时更新两个weka分类器 下面是我如何更新第一个分类器: List(X, Y, action).zipWithIndex.foreach{ case (attrString:String, index)=> attrs.elementAt(index) match{ case attr:Attribute => instance.setValue(attr,attrString) } } List(X, name, Y).zip

我正在同时更新两个weka分类器

下面是我如何更新第一个分类器:

 List(X, Y, action).zipWithIndex.foreach{
   case (attrString:String, index)=> attrs.elementAt(index) match{
     case attr:Attribute => instance.setValue(attr,attrString)
   }         
 }
 List(X, name, Y).zipWithIndex.foreach{
   case (attrString:String, index) => tagattrs.elementAt(index) match{
     case attr:Attribute => {
       println("Setting taginstance's "+index+"th field to "+attrString)
       taginstance.setValue(attr, attrString)
     }
   }
 }
下面是我如何更新第二个分类器:

 List(X, Y, action).zipWithIndex.foreach{
   case (attrString:String, index)=> attrs.elementAt(index) match{
     case attr:Attribute => instance.setValue(attr,attrString)
   }         
 }
 List(X, name, Y).zipWithIndex.foreach{
   case (attrString:String, index) => tagattrs.elementAt(index) match{
     case attr:Attribute => {
       println("Setting taginstance's "+index+"th field to "+attrString)
       taginstance.setValue(attr, attrString)
     }
   }
 }
您会注意到唯一的区别(我的调试语句除外)是/instance/应该有属性/X,Y,action/,而/taginstance/应该有属性/X,name,Y/

然后: println(实例) println(taginstance)

不幸的是,这是这两个函数的输出:

Setting taginstance's 0th field to DT
Setting taginstance's 1th field to warm
Setting taginstance's 2th field to JJ
DT,JJ,SHIFT
DT,JJ,?
前三行表示应该设置正确的值,但如果是这样,则最后一行的读数为DT,warm,JJ


见鬼

@Rehj的评论让我调试了这个问题。 不幸的是,我与实例关联的属性集错误。 在下面的中将
attrs
更改为
tagattrs
,解决了我的问题。我的错

 val tagdata = new Instances("Actions",tagattrs,10)
您是否尝试过setValue(int,String)而不是setValue(Attribute,String)?如果是,是否会发生相同的行为?[我实际上不了解Scala,但似乎很清楚这是您目前正在做的第二件事。][我添加了免责声明,以防我对发生的事情有误解。我指责我缺乏Scala知识!]