弄清楚我在这方面出了什么问题时遇到了麻烦。使用Java中的WEKA构建系统来研究关联,并正在尝试实现Apriori算法。目前这是代码:
package model;
import weka.associations.*;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
public class Apriori {
public static void main(String args[]) throws Exception {
String dataset = "/Users/andrew/workspace/Movies/src/data/tagsfinal.arff";
DataSource dsource = new DataSource(dataset);
Instances dapriori = dsource.getDataSet();
Apriori apriori = new Apriori();
apriori.buildAssociations(dapriori);
System.out.println(apriori);
}
}
通过查看网络上的几种实现,这似乎是一种被广泛接受的方法,但是我在“ apriori.buildAssociations”行中收到一条错误消息,告诉我该方法未为Apriori类型定义。此外,我用于关联的import语句仅用作包类型,并且在尝试将其扩展为:
import weka.associations.Apriori;
这将引发错误消息“导入weka.associations.Apriori与在同一文件中定义的类型冲突”。我搜寻了StackOverflow和其他资源,并意识到那里有很多类型未定义的问题,但是还没有找到解决该问题的方法。任何帮助/指针将不胜感激。
最佳答案
您的班级也被命名为Apriori
,因此您遇到名称冲突。
您应该将自己的类的名称更改为其他名称(例如AprioriTest
)。在不太可能的情况下,您确实需要将类命名为Apriori
,那么您就必须使用全名来引用该库的实现:
weka.associations.Apriori apriori = new weka.associations.Apriori();
apriori.buildAssociations(dapriori);