Weka开发[17]——关联规则之Apriori

转自 Koala++'s blog

先运行起来,函数如下:

publicvoid GetAssociationRules1()

{

try{

Discretize discretize = new Discretize();

discretize.setInputFormat( m_instances );

m_instances = Filter.useFilter( m_instances, discretize);

Apriori apriori = new Apriori();

apriori.buildAssociations( m_instances );

System.out.println( apriori.toString() );

}catch( Exception e )

{

e.printStackTrace();

}

}

publicstaticvoid main(String[] args) throws Exception

{

AssociationTest at = new AssociationTest();

at.LoadInstances( "F:\\Program Files\\Weka-3-6\\data\\iris.arff" );

at.GetAssociationRules();

}

我只需要得到它的规则,所以只分析了一点它的toString代码:

Utils.doubleToString((double) i + 1, (int)(Math.log(m_numRules)

/ Math.log(10) + 1), 0)

(double) i + 1表示第几个规则,而(int)(Math.log(m_numRules) / Math.log(10) + 1)表示要用几位来表示,因为十进制所以除以log(10)。比如有20个规则就是2,如果是200个规则就是3位,最后一个参数表示小数点后保留几位。

((AprioriItemSet)m_allTheRules[0].elementAt(i)).toString(m_instances)

这里是取m_allTheRules[0]的第i个元素,allTheRules[0]是关联规则的左部,第i个元素则是第几个规则,再看AprioriItemSet.toString(Instances)函数,它调用父类ItemSettoString函数。

publicfinal String toString(Instances instances) {

returnsuper.toString(instances);

}

termsSettoString如下:

public String toString(Instances instances) {

StringBuffer text = new StringBuffer();

for (int i = 0; i < instances.numAttributes(); i++)

if (m_items[i] != -1) {

text.append(instances.attribute(i).name() + '=');

text.append(instances.attribute(i).value(m_items[i]) + ' ');

}

text.append(m_counter);

return text.toString();

}

到这里就很清楚了,如果m_items[i]不等于-1就是规则中有第i个属性,text追加属性名和属性值。并且将这个规则出现的次数追加。

((AprioriItemSet) m_allTheRules[1].elementAt(i)).toString(m_instances)

当然就是规则的右部。

Utils.doubleToString(((Double) m_allTheRules[2].elementAt(i)).doubleValue(), 2) + ")");

是置信度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值