下载http://mirrors.cnnic.cn/apache/mahout/0.11.0/apache-mahout-distribution-0.9.0-src.zip
转成eclipse项目 F:\hadoopKit\data>mvn eclipse:eclipse [INFO] Scanning for projects... Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven -install-plugin/2.4/maven-install-plugin-2.4.pom 导入ecpilse kmeans算法是最为经典的基于划分的聚类方法,是十大经典的数据挖掘的算法之一 kmeans基本思想是,已空间k个点为中心进行聚类,对靠近他们的对象进行归类 1.通过迭代的方法,足次更新各聚类中心的值,直至得到最好的聚类结果 2.假设要把样本集分为c个类别,算法描述如下: 3.适当选择c个类的初始中心 4在第k次迭代中,对任意一个样本,求其到c各中心的距离,将该样本归到距离最短的中心所在的类 利用均值等方法更新该类的中心值 4对于所有的c个聚类中心不断重复迭代 算法关键在于初始中心和距离 参数Input指定待聚类的所有数据点,clusters指定初始聚类中心 如果指定参数k由org.apache.mahout.clustering.kmeans.RandomSeedGenerator.buildRandom通过org.apache.hadoop.fs直接从input指定文件 中随机读取k个点到clusters中根据原数据点和上次迭代(或初始聚类)的初始聚类中心计算本次迭代的聚类中心输出到 Cluster-N目录下 该过程由org.apache.mahout.clustering.kmeans.下的KmeansMapper\KmeansCombiner\KmeansReduccer\KmeansDriver实现 KmeansMapper在configure中初始化mapper时读入上一次迭代产生或初始聚类中心 每个mapper都读入所有的聚类中心 map方法对输入的每个点,计算距离其最近的类,并加入其中输出KEY为该点所属聚类id value为kmeansinfo实例包含各个点和各个分量的累加和 kmeans combiner 本地累加kmeans mapper输出的同一聚类id下点个数和各分量之和 kmeans reducer 累加同一聚类ID下的点个数和分量的和,求本次迭代的聚类中心并根据delta判断该聚类是否已收敛,上一次迭代聚类中心与本次迭代聚类 中心距离<delta判断该聚类是否已收敛,上一次迭代聚类中心与本次迭代聚类<delta 输出各聚类中心和其是否收敛标记 kmeansDriver控制迭代过程直至超过最大迭代次数或所有聚类都已经收敛 每轮迭代后,kmeansDriver读取其cluster-N目录下的所有聚类若所有聚类已收敛了,则整个kmeans聚类过程收敛了 参数调整 mahout kmeans聚类有两个重要的参数收敛delta和最大迭代次数 案列零售 下载数据 http://fimi.ua.ac.be/data/ [root data]# wget http://fimi.ua.ac.be/data/retail.dat创建目录
[root bin]# hadoop fs -mkdir -p /user/root/mahoutData 上传文件 root data]# hadoop fs -put retail.data /user/root/mahoutData [root data]# mahout fpg -i /user/root/mahoutData/retail.data -o patterns -method mapreduce -s 1000 -regex '[]' mahout seqdumper -i ~/patterns/fpgrowth/part-r-000000 -o ~/data/patterns.txt