美文网首页工作生活
Mahout | kmeans算法

Mahout | kmeans算法

作者: icebreakeros | 来源:发表于2019-07-02 09:54 被阅读0次

    kmeans

    canopy算法

    [TODO: canopy原理]

    canopy算法

    mahout kmeans参数

    -i:指定待分类数据集所在的路径
    -c:指定初始类别所在路径
    -o:输出聚类后的结果存放路径
    -k:随机选取的类别数目
    -x:最多迭代终止次数
    -cl:是否首先通过canopy选取k个点,然后再运行k-means聚类
    -dm:采用的向量距离计算方法,在此指定实现类
    -cd:聚集偏移量,即本轮迭代次数与上一轮迭代相比,变动点总量变化值
    -ow:结果目录已经存在时是否对其覆盖
    -xm:sequential或者mapreduce,顺序执行还是分布式执行
    

    实例

    /usr/local/mahout/examples/bin/cluster-reuters.sh

    if [[ -z "$MAHOUT_WORK_DIR" ]]; then
      WORK_DIR=/tmp/mahout-work-${USER}
    else
      WORK_DIR=$MAHOUT_WORK_DIR
    fi
    
    curl http://kdd.ics.uci.edu/databases/reuters21578/reuters21578.tar.gz \
    -o ${WORK_DIR}/reuters21578.tar.gz
    mkdir -p ${WORK_DIR}/reuters-sgm
    tar xzf ${WORK_DIR}/reuters21578.tar.gz -C ${WORK_DIR}/reuters-sgm
    
    # 将SGML格式数据转化为文本文件
    mahout org.apache.lucene.benchmark.utils.ExtractReuters \
    ${WORK_DIR}/reuters-sgm \
    ${WORK_DIR}/reuters-out
    
    hdfs dfs -mkdir -p ${WORK_DIR}/
    hdfs dfs -mkdir ${WORK_DIR}/reuters-sgm
    hdfs dfs -mkdir ${WORK_DIR}/reuters-out
    hdfs dfs -put ${WORK_DIR}/reuters-sgm ${WORK_DIR}/reuters-sgm
    hdfs dfs -put ${WORK_DIR}/reuters-out ${WORK_DIR}/reuters-out
    
    # 将数据转化为SequenceFile格式
    mahout seqdirectory \
    -i ${WORK_DIR}/reuters-out \
    -o ${WORK_DIR}/reuters-out-seqdir \
    -c UTF-8 -chunk 64 -xm sequential
    
    # 数据向量化
    mahout seq2sparse \
    -i ${WORK_DIR}/reuters-out-seqdir/ \
    -o ${WORK_DIR}/reuters-out-seqdir-sparse-kmeans \
    --maxDFPercent 85 --namedVector \
    
    # 执行kmeans  
    mahout kmeans \
    -i ${WORK_DIR}/reuters-out-seqdir-sparse-kmeans/tfidf-vectors/ \
    -c ${WORK_DIR}/reuters-kmeans-clusters \
    -o ${WORK_DIR}/reuters-kmeans \
    -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure \
    -x 10 -k 20 -ow --clustering
    
    # 导出结果
    mahout clusterdump \
    -i `hdfs dfs \
    -ls -d ${WORK_DIR}/reuters-kmeans/clusters-*-final | awk '{print $8}'` \
    -o ${WORK_DIR}/reuters-kmeans/clusterdump \
    -d ${WORK_DIR}/reuters-out-seqdir-sparse-kmeans/dictionary.file-0 \
    -dt sequencefile -b 100 -n 20 \
    --evaluate -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure \
    -sp 0 \
    --pointsDir ${WORK_DIR}/reuters-kmeans/clusteredPoints
    
    cat ${WORK_DIR}/reuters-kmeans/clusterdump
    

    相关文章

      网友评论

        本文标题:Mahout | kmeans算法

        本文链接:https://www.haomeiwen.com/subject/qfbacctx.html