zoukankan      html  css  js  c++  java
  • Apriori算法实战福彩双色球

      Apriori算法是数据挖掘的入门级算法,这里记录一下用Weka提供的Apriori实现对福彩双色球开奖结果的挖掘过程。

      我们的挖掘目标是历届开奖结果中红球的频繁2,3项集。

        1. 数据准备

      福彩双色球的原理是红球33选6,蓝球是16选1,历届福彩双色球的中奖结果可以在乐彩网站找到,我们可以用一个非常简单的爬虫去爬取这些数据。我这里有已经爬好的数据,从2003年2月23号的第一期开始,到2012年10月24号为止,总共1403期,可以来信(kemaswill@163.com)索取。

      双色球是从红球中33选6,所以条记录只有6个数,假设为3,7,11,18,25,29,我们需要对这种记录进行预处理以便Weka的Apriori算法识别,该记录处理后的结果为0,0,3,0,0,0,7,0,0,0,11,0,0,0,0,0,0,18,0,0,0,0,0,0,25,0,0,0,29,0,0,0,0。

      对每条记录做如上处理后,创建arff文件:

      @relation lottery


      @attribute red1 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33}
      @attribute red2 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33}
      @attribute red3 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33}
       ...
      @attribute red32 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33}
      @attribute red33 {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33}

      @data
      0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,28,0,30,31,0,33
      0,0,0,0,0,0,0,0,0,0,0,0,0,14,15,0,0,18,0,0,0,0,0,0,25,26,0,0,0,30,0,0,0
      0,0,0,0,0,0,0,0,0,10,11,12,13,0,0,0,0,0,0,0,0,0,0,0,0,26,0,28,0,0,0,0,0
      0,0,0,4,0,0,0,0,9,0,0,0,0,0,0,0,0,0,19,20,21,0,0,0,0,26,0,0,0,0,0,0,0
       ...

        2. 运行Apriori算法

        我是在Eclipse中导入Weka的源代码,然后直接执行weka.association.Apriori算法,参数为:

        -t path/to/lottery.arff -g path/to/lottery_result.txt  -C 0.3 -M 0.01 -I -Z

        -t为arff输入文件,-g为结果的存储路径,-C为关联规则的最小可信度,-M为频繁模式的最小支持度,-I表示输出频繁模式(默认只输出关联规则,不输出频繁模式),-Z表示0代表缺失值,不会被当做频繁模式处理。

        3. 分析结果

        在支持度为1%的情况下,所有的2项集都是频繁二项集(亦即33*32/2=528个频繁二项集)。

        频繁三项集有6个:

        red1=1 red18=18 red22=22 14
        red3=3 red7=7 red10=10 16
        red3=3 red7=7 red13=13 14
        red3=3 red24=24 red27=27 14
        red4=4 red10=10 red26=26 15
        red4=4 red22=22 red29=29 14

        在支持度为4%的情况下,没有频繁三项集(最频繁的三项集频数也就是16,也就1%多一点点)有8个频繁二项集:

        red1=1 red18=18 58
        red3=3 red5=5 66
        red3=3 red7=7 61
        red3=3 red21=21 56
        red4=4 red30=30 56
        red14=14 red30=30 56
        red18=18 red30=30 59
        red20=20 red26=26 59

  • 相关阅读:
    【CF720D】Slalom 扫描线+线段树
    【CF724F】Uniformly Branched Trees 动态规划
    【CF725G】Messages on a Tree 树链剖分+线段树
    【CF736D】Permutations 线性代数+高斯消元
    【CF799E】Aquarium decoration 线段树
    【CF739E】Gosha is hunting 贪心
    【CF744D】Hongcow Draws a Circle 二分+几何
    【BZOJ3774】最优选择 最小割
    【BZOJ2138】stone Hall定理+线段树
    【BZOJ4445】[Scoi2015]小凸想跑步 半平面交
  • 原文地址:https://www.cnblogs.com/kemaswill/p/2738912.html
Copyright © 2011-2022 走看看