您的位置:首页 > 其它

kmeans 文本聚类方法简介

2018-02-09 18:36 183 查看
k-均值算法是一个很常见的算法,它的基本思想是:通过迭代寻找k个聚类的一个划分方案,使得用这K个聚类的均值来代表相应各个样本时所得的总体误差最小。
算法步骤:
1.生成索引文件
   将分类的文本以句子id   句子内容(已分词处理) 作为用来生成索引文件的语料:
   java -cp $JAR lucene.text.FileIndexing $baseDir/test $baseDir/index

2.将索引文件生成向量vector
   mahout lucene.vector \
       --dir $LUCENE_DIR \   #索引文件位置
       --idField id \
       --output $OUTPUT_DIR \  #输出位置
       --field post \
       --dictOut $DICT_DIR \
       --seqDictOut $SEQ_DICT_DIR \
       --weight TFIDF \
       --minDF 1 \
       --norm 2 \

       --maxPercentErrorDocs 1 

3.kmeans聚类处理
    mahout kmeans \
         -i data/vector.txt \
         -c data/centroids \
         -cl \
         -cd 1.0 \
         -o data/kmeans-clusters \
         -k $ksum \
         -ow \
         -x 2000 \
         -dm org.apache.mahout.common.distance.ChebyshevDistanceMeasure 
 -i :输入向量
 -c:若不设定k,则用这个目录里面的点,作为聚类中心点。否则,随机选择k个点,作为中心点。
 -k:多少个聚类
 -o:输出结果
 -dm:距离公式
4.查看结果
 mahout clusterdump -d $baseDir/data/dict.txt \
                    -dt text \
                    -dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure \
                    -i $baseDir/data/kmeans-clusters/clusters-*-final \
                    -o $baseDir/data/kmeans.clusterdump \
                    -n 10 \
                    -b 10 \
                    -of JSON \

                    -p $baseDir/data/kmeans-clusters/clusteredPoints 
具体代码和示例详见我的githup:https://github.com/ouprince/kmeans
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  kmeans