kmeans 文本聚类方法简介

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值