• 基于mahout的海量数据关联规则挖掘


    数据准备

      到http://fimi.ua.ac.be/data/下载一个购物篮数据retail.dat。

    数据格式如下:

    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 34 35
    36 37 38 39 40 41 42 43 44 45 46
    38 39 47 48
    38 39 48 49 50 51 52 53 54 55 56 57 58
    32 41 59 60 61 62
    3 39 48
    63 64 65 66 67 68
    32 69
    48 70 71 72
    39 73 74 75 76 77 78 79
    36 38 39 41 48 79 80 81
    82 83 84
    41 85 86 87 88
    39 48 89 90 91 92 93 94 95 96 97 98 99 100 101
    36 38 39 48 89
    39 41 102 103 104 105 106 107 108
    38 39 41 109 110
    39 111 112 113 114 115 116 117 118
    119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
    48 134 135 136
    39 48 137 138 139 140 141 142 143 144 145 146 147 148 149
    39 150 151 152
    38 39 56 153 154 155
    48 156 157 158 159 160
    39 41 48
    161 162 163 164 165 166 167
    38 39 48 168 169 170 171 172 173
    32 39 41 48 174 175 176 177 178

      上传到hadoop文件系统  

    hadoop fs -mkdir  /user/hadoop/mahoutData #创建目录
    hadoop fs -put ~/data/retail.dat /user/hadoop/mahoutData

    调用FpGrowth算法

    
    
    mahout fpg -i /user/hadoop/mahoutData/retail.dat -o patterns -method mapreduce -s 1000 -regex '[ ]'
    
    

      -i表示input,-o表示-output,-s表示最小支持度,'[ ]'表示以行内的数据以空格分开。

    
    

      一两分钟后执行完毕,生成的文件被序列化了,直接查看会是乱码,因此需要用mahout还原回来:

    
    
     mahout seqdumper -i /user/hadoop/patterns/fpgrowth/part-r-00000 -o ~/data/patterns.txt
    
    

      输出结果:  

    Key: 39: Value: ([39],50675)
    Key: 48: Value: ([48],42135), ([39, 48],29142)
    Key: 38: Value: ([38],15596), ([39, 38],10345), ([48, 38],7944), ([39, 48, 38],6102)
    Key: 32: Value: ([32],15167), ([39, 32],8455), ([48, 32],8034), ([39, 48, 32],5402), ([38, 32],2833), ([39, 38, 32],1840), ([48, 38, 32],1646), ([39, 48, 38, 32],1236)
    Key: 41: Value: ([41],14945), ([39, 41],11414), ([48, 41],9018), ([39, 48, 41],7366), ([38, 41],3897), ([32, 41],3196), ([39, 38, 41],3051), ([48, 38, 41],2374), ([39, 32, 41],2359), ([48, 32, 41],2063), ([39, 48, 38, 41],1991), ([39, 48, 32, 41],1646)
    Key: 65: Value: ([65],4472), ([39, 65],2787), ([48, 65],2529), ([39, 48, 65],1797)
    Key: 89: Value: ([89],3837), ([48, 89],2798), ([39, 89],2749), ([39, 48, 89],2125)
    Key: 225: Value: ([225],3257), ([39, 225],2351), ([48, 225],1736), ([39, 48, 225],1400)

    这里输出的只是频繁项集,但在此基础上提取关联规则已经不是难事

    
    
  • 相关阅读:
    [Python]计算豆瓣电影TOP250的平均得分
    [Golang]使用自建代理访问指定网站
    HDU 2689.Sort it-冒泡排序
    HDU 1728.逃离迷宫-BFS
    hihoCoder #1498.Diligent Robots
    POJ 2503.Babelfish-sscanf()函数+strcmp()函数+二分
    Codeforces 608 B. Hamming Distance Sum-前缀和
    Codeforces 608 A. Saitama Destroys Hotel
    sscanf()函数
    UVA 11461.Square Numbers
  • 原文地址:https://www.cnblogs.com/energy1010/p/6408856.html
Copyright © 2020-2023  润新知