Mahout 聚类算法学习之Canopy(一)
来源:互联网 发布:excel函数重复数据 编辑:程序博客网 时间:2024/06/08 04:23
网上找到的学习博客参差不齐,好多都不能实现。因此我整合了一下,写出此篇博客
1.首先要下载测试数据
最好在csdn 上下载
下载好数据后在ubuntu下一定要将后缀名改为.data,否则运行时将出现错误
2.将测试数据转化为序列文件,借鉴了《Mahout算法解析与案例实战》但它的代码无论如何都跑不出来,因此对转化序列文件的代码修改了一下。
package canopy;import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat; import org.apache.hadoop.util.GenericOptionsParser;import org.apache.mahout.math.RandomAccessSparseVector; import org.apache.mahout.math.Vector; import org.apache.mahout.math.VectorWritable; /** ??* transform text data to vectorWritable data ??* @author fansy ??* ??*/ public class Text2VectorWritable { public static void main(String[] args) throws Exception {Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: wordcount <in> <out>"); System.exit(2); } Job job = new Job(conf, "Text2VectorWritable"); job.setOutputFormatClass(SequenceFileOutputFormat.class); job.setMapperClass(Text2VectorWritableMapper.class); job.setMapOutputKeyClass(LongWritable.class); job.setMapOutputValueClass(VectorWritable.class); job.setReducerClass(Text2VectorWritableReducer.class); job.setOutputKeyClass(LongWritable.class); job.setOutputValueClass(VectorWritable.class); job.setJarByClass(Text2VectorWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); SequenceFileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1);} public static class Text2VectorWritableMapper extends Mapper<LongWritable,Text,LongWritable,VectorWritable>{ public void map(LongWritable key,Text value,Context context)throws IOException,InterruptedException{ String[] str=value.toString().split("\\s{1,}"); // split data use one or more blanker Vector vector=new RandomAccessSparseVector(str.length); for(int i=0;i<str.length;i++){ vector.set(i, Double.parseDouble(str[i])); } VectorWritable va=new VectorWritable(vector); context.write(key, va); } } /** ??* Reducer: do nothing but output ??* @author fansy ??* ??*/ public static class Text2VectorWritableReducer extends Reducer<LongWritable, VectorWritable,LongWritable,VectorWritable>{ public void reduce(LongWritable key,Iterable<VectorWritable> values,Context context)throws IOException,InterruptedException{ for(VectorWritable v:values){ context.write(key, v); } } }}将上面的文件打包,运行测试数据,此处很简单,就是普通的hadoop运行,结果会生成序列文件 part-r-00000
3.使用如下命令将序列文件运行
mahout canopy --input testdata/part-r-00000 --output output/canopy --distanceMeasure org.apache.mahout.common.distance.EuclideanDistanceMeasure --t1 80 --t2 55 --t3 80 --t4 55 --clustering
阅读全文
1 0
- Mahout 聚类算法学习之Canopy(一)
- mahout之canopy聚类算法
- Mahout聚类算法学习之Canopy算法的分析与实现
- mahout 源码解析之聚类--Canopy算法
- Mahout系列之Canopy聚类算法分析
- Mahout聚类算法canopy源码分析(1)
- Mahout源码canopy聚类算法分析(2)
- Mahout源码canopy聚类算法分析(3)
- mahout-0.6运行canopy聚类算法
- mahout之canopy算法简介
- Mahout 系列之--canopy 算法
- Mahout之聚类Canopy分析
- Mahout学习之运行canopy算法错误及解决办法
- 机器学习之聚类算法(CANOPY)
- 实战Mahout聚类算法Canopy+K-means
- 实战Mahout聚类算法Canopy+K-means
- 实战Mahout聚类算法Canopy+K-means
- Canopy聚类算法与Mahout中的实现
- 【杂记】万丈红尘一杯酒,千秋大业一壶茶
- vue 组件(Component)
- SpringMVC4.3x教程之一基本使用详解
- 3 如何修改文字颜色
- 《算法导论》第四章-第1节_练习(参考答案)
- Mahout 聚类算法学习之Canopy(一)
- Redis4.0.1 安装、设置密码、开启远程访问
- 深度理解链式前向星
- Codeforces Round #426 (Div. 2) C
- A. Knight Tournament----并查集
- OAuth的三种认证方式
- 外国商标中国注册的规定有哪些
- day18之用shell脚本实现一个希尔排序
- 编写一个函数,分别统计出传入字符串参数(可能不止一个参数)的英文字母,空格,数字和其他字符的个数