单机环境及分布式环境下K-Means聚类算法的运行实例

 

单机环境下的K-Means聚类算法运行实例

参考书籍《Mahout in Action》:要资源的可以找我~(中英文都有)

在eclipse平台上实现K-Means实例

代码如下:

package kmeans;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.WeightedPropertyVectorWritable;
import org.apache.mahout.clustering.kmeans.KMeansDriver;
import org.apache.mahout.clustering.kmeans.Kluster;
import org.apache.mahout.common.distance.EuclideanDistanceMeasure;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.VectorWritable;

public class testkmeans {
	public static final double[][] points = {
			{2, 4}, {4, 2}, {6, 2}, {5, 3}, {5, 5}, {7, 5},
	        {5, 15}, {6, 17}, {4, 14}, {5, 13}, {9, 15}, {3, 14}, {7, 13},
	        {20, 16}, {19, 15}, {17, 15}, {16, 14}, {14, 18}, {22, 10}, {17, 17}, {16, 13}, {18, 14}, {17, 13},
	        {22, 26}, {24, 23}, {25, 25}, {26, 22}, {26, 26}, {26, 28}, {28, 18}, {28, 28}};

    //将已经转换为Vector类型的点存到序列文件中
	public static void writePointsToFile(List<Vector> points,
										String fileName,
										FileSystem fs,
										Configuration conf) throws IOException {
		Path path = new Path(fileName);
		SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf,
		path, LongWritable.class, VectorWritable.class);
		long recNum = 0;
		VectorWritable vec = new VectorWritable();
		for (Vector point : points) {
			vec.set(point);
			writer.append(new LongWritable(recNum&#
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值