【问题标题】:Weka: Matching Attribut NamesWeka:匹配属性名称
【发布时间】:2013-02-13 07:57:28
【问题描述】:

我有两个 weka Instances 课程。我试图识别一个与另一个属性同名的属性。但是,使用:

if (testing.attribute(i).name() == training.attribute(j).name())

为每个属性引发False。这是每个的 arff 文件。如您所见,两者都包含attr1attr2attr3

@relation SampleTrain3Attributes
@attribute attr1 numeric
@attribute attr2 {a,b,c}
@attribute attr3 numeric
@data
1,a,2
3,b,4
5,c,6
7,a,8

@relation SampleTest5Attributes
@attribute attr1 numeric
@attribute attr2 {a,b,c}
@attribute attr3 numeric
@attribute attr4 {d,e,f}
@attribute attr5 numeric
@data
1,a,2,d,3
3,b,4,f,4
5,c,6,e,8
7,a,8,d,9

任何见解将不胜感激。谢谢!

【问题讨论】:

    标签: machine-learning weka


    【解决方案1】:

    Attribute.name() 返回一个String。当使用== 比较Strings 时,您是在比较参考。一般来说,只有当引用相同时才会产生 true,即,指向完全相同的对象。如果要检查它们是否具有相同的内容,请使用String.equals(),即,

    if (testing.attribute(i).name().equals(training.attribute(j).name()))
    

    【讨论】:

    • 谢谢。我没有意识到这一点。
    【解决方案2】:

    您需要比较字符串本身,而不是对它们的引用 --

    if (testing.attribute(i).name().equals(training.attribute(j).name()))
    

    【讨论】:

      猜你喜欢
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 2016-09-04
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 2021-12-03
      相关资源
      最近更新 更多