K-Means聚类算法实现对路透社语料reuters聚类

来源:互联网 发布:stm32f103tbu6编程 编辑:程序博客网 时间:2024/06/11 13:46
准备工作:

    Linux环境,此处我的是Centos

   JDK            ,  此处我的是jdk1.7

   Hadoop + Mahout

   reuters语料(.txt或者.smg格式)

   文本格式转换 :

     http://blog.csdn.net/u012965373/article/details/50740070

开始:

1、先上传到hdfs

hadoop fs -put /usr/hadoop/mahout/reuTest-HD /usr/hadoop/reuTest-HD




2、将txt格式转化为sequenceFile

    运行命令如下:

mahout seqdirectory -c UTF-8 -i /usr/hadoop/reuTest-HD -o /usr/hadoop/reuTestHD-seqfiles



3、可以用seqdumper查看生成的内容

mahout seqdumper -s /usr/hadoop/reuTestHD-seqfiles/chunk-0 -o /usr/hadoop/mahout/reuTestHD-seqfiles.txt

生成的内容在reuTestHD-seqfiles.txt中



4、将SequenceFile格式转化为向量格式
mahout seq2sparse -i /usr/hadoop/reuTestHD-seqfiles -o /usr/hadoop/reuTestHD-vectors -ow
在HDFS中生成reuters-vectors目录,该目录下文件结构如下:
- df-count 目录:保存着文本的频率信息
- tf-vectors 目录:保存着以 TF 作为权值的文本向量
- tfidf-vectors 目录:保存着以 TFIDF 作为权值的文本向量
- tokenized-documents 目录:保存着分词过后的文本信息
- wordcount 目录:保存着全局的词汇出现的次数
- dictionary.file-0 目录:保存着这些文本的词汇表
- frequcency-file-0 目录 : 保存着词汇表对应的频率信息







5、使用Canopy聚类为Kmeans聚类提供初始类
命令如下:

mahout canopy -i /usr/hadoop/reuTestHD-vectors/tfidf-vectors -o /usr/hadoop/reuTestHD-canopy-centroids -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure -t1 1500 -t2 2000

在HDFS中生成reuters-canopy-centroids目录








6、使用Kmeans聚类
命令如下:

mahout kmeans -i /usr/hadoop/reuTestHD-vectors/tfidf-vectors -o /usr/hadoop/reuTestHD-kmeans-clusters -dm org.apache.mahout.common.distance.TanimotoDistanceMeasure -c /usr/hadoop/reuTestHD-canopy-centroids/clusters-0-final -cd 0.1 -ow -x 20 -cl

在HDFS中生成 /usr/hadoop/reuTestHD-kmeans-clusters目录





7、使用ClusterDumper工具查看聚类结果
命令如下:

mahout clusterdump -dt sequencefile -d /usr/hadoop/reuTestHD-vectors/dictionary.file-* -s /usr/hadoop/reuTestHD-kmeans-clusters/clusters-1-final -b 10 -n 10 -o /usr/hadoop/结果.txt




0 0
原创粉丝点击