注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Koala++'s blog

计算广告学 RTB

 
 
 

日志

 
 

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

2009-04-25 15:13:35|  分类: 机器学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

先运行起来,函数如下:

public void 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();

        }

}

 

public static void 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函数。

public final String toString(Instances instances) {

         return super.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) + ")");

是置信度。

  评论这张
 
阅读(3017)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017