希望你们周五都有一个美好的星期五。我的名字是Minh,我是论坛的新成员。我正在学习使用Weka,如果您可能知道答案,我有一个问题,我想寻求您的帮助。我打算将weka用于我的Java学校项目,我相信我在我的项目中使用了weka-3.7.7 jar文件。这一切都运行良好,当我使用关联规则的apriori包时,我能够查看输出。但是,当我尝试使用FastVector(例如FastVector = apriori.getAllTheRules())从apriori.getAllTheRules()打印出每个数据项时,我陷入困境。我因为FastVector被弃用而陷入困境,我在google上阅读了一些评论,并说它可以用名为list array的东西替换它,而无需进一步的例子或解释如何追求它。
但是因为我是Weka的新手而且我在网上找不到其他文章,提到如何使用apriori.getAllTheRules()的list数组。因此,如果您碰巧知道一些文章或程序教程,提及有关如何使用列表数组的目的,请转发给我这些资源。我非常感谢您提前提供的所有帮助。
attach是我使用apriori规则的示例java程序
package org.minh;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import weka.associations.Apriori;
import weka.core.Instances;
public class Main
{
public static void main(String[] args)
{
Instances data = null;
try {
BufferedReader reader = new BufferedReader( new
FileReader( "c:\\weka\\CRMArff.arff" ) );
data = new Instances(reader);
reader.close();
data.setClassIndex(data.numAttributes() - 1);
}
catch ( IOException e ) {
e.printStackTrace();
}
double deltaValue = 0.05;
double lowerBoundMinSupportValue = 0.05;
double minMetricValue = 0.5;
int numRulesValue = 100;
double upperBoundMinSupportValue = 1.0;
String resultapriori;
Apriori apriori = new Apriori();
apriori.setDelta(deltaValue);
apriori.setLowerBoundMinSupport(lowerBoundMinSupportValue);
apriori.setNumRules(numRulesValue);
apriori.setUpperBoundMinSupport(upperBoundMinSupportValue);
apriori.setMinMetric(minMetricValue);
try
{
apriori.buildAssociations( data );
}
catch ( Exception e ) {
e.printStackTrace();
}
resultapriori = apriori.toString();
System.out.println(resultapriori);
}
}
答案 0 :(得分:0)
使用FastVector提取每个规则,我使用了这个循环:
FastVector[] ass=ap.getAllTheRules();
for (FastVector rule : ass) {
if (rule == null) continue;
System.out.println("---> " + rule);
for (int i = 0; i < rule.size(); ++i) {
Object o = rule.elementAt(i);
if (o instanceof AprioriItemSet) {
System.out.println(((AprioriItemSet) o).toString(data));
} else {
System.out.println("rule: "+o);
}
}
}
不幸的是,我无法帮助您如何使用数组列表来实现这一目的!