mahout0.9 编写简单kmeans示例

hadoop 之Mahout 数据挖掘 Mahout 仅提供一些java的算法包,通过Mahout执行这些算法包,并把hdfs上的文件作为输入可以在hadoop上做分布式计算 提供的常用算法 Mahout 提供了常用算法的程序库,可以基于分布式做数据挖掘. 常见算法 回归算法:用于预测(日期交易量预测等等)。 比如身高和体重作为x,y坐标,给出一组人的身高体重,形成作为图上的一个个点(学习集), 计算出一条直线或者... 阅读详情

网上找了很久,发现大多数的帖子里用的mahout的版本都比较低,摸索了半天终于搞出来了,在此mark一下,直接上代码:

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;

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

public class WriteToSequenceFile {

    public static final double[][] points = {
            {1, 1}, {2, 1}, {1, 2},
            {2, 2}, {3, 3}, {8, 8},
            {9, 8}, {8, 9}, {9, 9}};

    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++), vec);
        }
        writer.close();
    }

    public static List<Vector> getPoints(double[][] raw) {
        List<Vector> points = new ArrayList<Vector>();
        for (int i = 0; i < raw.length; i++) {
            double[] fr = raw[i];
            Vector vec = new RandomAccessSparseVector(fr.length);
            vec.assign(fr);
            points.add(vec);
        }
        return points;
    }

    public static void main(String args[]) throws Exception {

        int k = 2;

        List<Vector> vectors = getPoints(points);

        File testData = new File("clustering/testdata");
        if (!testData.exists()) {
            testData.mkdir();
        }
        testData = new File("clustering/testdata/points");
        if (!testData.exists()) {
            testData.mkdir();
        }

        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(conf);
        writePointsToFile(vectors, "clustering/testdata/points/file1", fs, conf);

        Path path = new Path("clustering/testdata/clusters/part-00000");
        SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf, path, Text.class, Kluster.class);

        for (int i = 0; i < k; i++) {
            Vector vec = vectors.get(i);
            Kluster cluster = new Kluster(vec, i, new EuclideanDistanceMeasure());
            writer.append(new Text(cluster.getIdentifier()), cluster);
        }
        writer.close();

        KMeansDriver.run(conf,
                new Path("clustering/testdata/points"),
                new Path("clustering/testdata/clusters"),
                new Path("clustering/output"),
                0.001,
                10,
                true,
                0,
                true);

        SequenceFile.Reader reader = new SequenceFile.Reader(fs,
                new Path("clustering/output/" + Cluster.CLUSTERED_POINTS_DIR + "/part-m-0"), conf);

        IntWritable key = new IntWritable();
        WeightedPropertyVectorWritable value = new WeightedPropertyVectorWritable();
        while (reader.next(key, value)) {
            System.out.println(value.toString() + " belongs to cluster " + key.toString());
        }
        reader.close();
    }

}


mahout canopy+kmeans测试数据 立即下载

相关推荐

mahout学习

mahout聚类算法学习必备,这只是一个最主要的kmeans算法,希望能帮到你们

Apache Mahout的KMeans算法测试

Mahout是Hadoop中实现数据挖掘的包,虽然现在一般用spark mlib,但是为了做比较,想着将mahout的算法进行验证测试一下。。 Mahout的安装还是非常简单的,只需要解压一下再进行如下配置就可以。 # Mahout export MAHOUT_HOME=/home/ndscbigdata/soft/mahout-0.11.0 export PATH=$MAHOUT

大数据挖掘SparkExpert的博客 823

mahout0.9测试详细傻瓜说明

mahout0.9测试详细傻瓜说明,简单测试外加kmeans算法,绝对详细

kmeans实际应用例子 java,mahout应用kmeans进行文本聚类——实例分析

输入分析:mahout下处理的文件必须是SequenceFile格式的,所以需要把txtfile转换成sequenceFile,而聚类必须是向量格式的,mahout提供下面两个命令来将文本转成向量形式1.mahout seqdirectory:将文本文件转成SequenceFile文件,SequenceFile文件是一种二制制存储的key-value键值对,,对应的源文件是org.apache.m...

weixin_39990410的博客 599

避开SiC MOSFET驱动设计的3个大坑:电流/电阻/电压配置全指南

本文深入解析SiC MOSFET驱动设计中的三大关键参数:驱动电流、栅极电阻和工作电压,揭示常见设计误区与优化方案。通过实际案例与数据对比,指导工程师避开第三代电力电子半导体应用中的典型陷阱,提升系统可靠性与效率。特别针对驱动电源配置、栅极电阻选型等核心问题提供可落地的解决方案。

weixin_29214199的博客 384

yersinia -G打不开图形化界面解决方案(曲线救国,实操可行)

附Kali 2021 VMware懒人版,已完成汉化,更新源,并已经安装yersinia。ping 114.114.114.114也不通,接着ifconfig发现 IP地址有的,然后手动配置了IP地址,发现还是Ping不通114.11.4.114.114,然后输入。更新源后,报错源无法解析,同时ping www.baidu.com也不通,那可能是DNS存在问题,更新一下DNS服务器。百度找了很久,有个回答比较接近,但一一尝试了几遍,还是无解,解决不了呀!•(2)Yersinia编译的时候,要选择gtk。

weilandeyongheng的专栏 4170

mahout kmeans 例子

mahout 测试例子 kmeans

既认准这条路,又何必在意要走多久 2188

Excel中如何快速地将成绩按比例来划分为等级?

问题介绍: 记录说明:班级里共有40个人,按最终总平均成绩从高到低划分等级,A等级30%,B等级50%,C等级20%。 部分成绩如下表所示: Excel中相关函数介绍: IF函数 IF函数有三个参数,语法如下: =IF(条件判断, 结果为真返回值, 结果为假返回值) 第一参数是条件判断,比如说“A1=">37”这种,判断TRUE或FALSE。如果判断是TRUE(结果为真)那么IF函数返回值是第二参数,否则(结果为假)返回第三参数。 如果省略了第三参数,则当结果为假时,会返回FALSE。 如果公式

Wendy的博客 1万+

mahout下的Hadoop平台上的Kmeans算法实现

Mahout主要有协同过滤、聚类和分类三种算法的实现。现在我们就用Mahout来实现经典的Kmeans聚类算法。并且在Hadoop平台上跑出个结果!

小新新的专栏 5296

无人机蜂群联合指挥作战技术详解

随着人工智能、通信技术、新材料等领域的不断进步,无人机蜂群联合指挥作战技术将迎来更加广阔的发展前景。未来,无人机蜂群将更加智能化、自主化,能够执行更加复杂、精细的作战任务。同时,加强国际合作,共同制定国际规则和标准,将是推动无人机蜂群技术健康发展的重要方向。无人机蜂群技术,是指通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,执行复杂多样的军事任务。2. 通信与数据链:采用高速、低延迟、抗干扰的通信技术,保障群体内无人机间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1546

Python爬虫实战:使用Scrapy+Playwright高效获取电力市场数据

本文将详细介绍如何使用Python构建一个高效的电力市场数据爬虫系统。我们将结合Scrapy框架和Playwright浏览器自动化工具,解决电力市场网站常见的反爬机制,实现数据的稳定抓取。文章包含完整的项目搭建流程、代码实现、数据处理方案以及部署建议,帮助读者掌握现代爬虫开发的核心技术。关键词:Python爬虫、Scrapy、Playwright、电力市场、数据采集、反爬对策python复制下载# 基本字段region = scrapy.Field() # 区域。

2201_76125261的博客 1882

mahout 0.9 连接mysql_部署安装 Mahout

一、Mahout简介Mahout是ApacheSoftwareFoundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。ApacheMahout项目已经发展到了它的第三个年头,目前已经有了三个公共发行版本。Mahout包含许多实现,包括集群、分类、推荐过滤、频繁子项挖掘。此外,通过使用ApacheH...

weixin_28892727的博客 343

化工设备设计软件:PVELITE二次开发_(12).数据导入导出与兼容性

在数据导入之前,需要定义数据在PVELITE中的结构。可以通过编程接口定义字段名称和数据类型。# 导入必要的库 import pvelite # 创建PVELITE实例 pve = pvelite . PVELITE() # 定义CSV数据结构 csv_structure = {

kkchenjj的博客 1216

mahout 0.9 连接mysql_mahout学习之二——mahout0.9kmeans聚类实例

最近学习《Mahout实战》,但是书中的代码是实用mahout0.5版本,很多地方在mahout0.9版本中已经改头换面了,经调试,阅读mahout0.9api,运行结果如图:修改代码如下:package cn.kelaile.hadooptest;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Fil...

weixin_39641386的博客 143

手把手教你学Simulink--使用Simulink进行双冗余电机驱动系统的故障切换验证

提高系统可靠性:当一个电机或其驱动器出现故障时,另一个可以立即接管,避免系统停机。增强安全性:对于一些关键任务的应用场景(如飞行控制),确保即使在硬件故障情况下也能维持基本操作能力。简化维护:允许在不影响系统正常工作的情况下进行维护和更换故障部件。确定可能发生的故障类型(如过流、欠压、温度过高),以及每种故障对应的条件。通过上述步骤,我们简要介绍了如何基于Simulink实现双冗余电机驱动系统的故障切换验证。

MHD0815的博客 441

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Mahout0.9的安装与测试

最近想实协同过滤的MR算法,但是网上查了一下,发现hadoop的生态系统中的Mahout的项目已经实现了相应的算法,因此想先尝试着实时这个mahout的使用及效果。要想用mahout必须要部署到hadoop上咯。 1、下载mahout的版本,并解压缩到本地 通过 http://mahout.apache.org/ 下载相应的版本,我下载的是mahout-distribution-0.9.tar

我与大象的故事 420

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mahout 0.9 连接mysql_Mahout0.9的安装与测试

最近想实协同过滤的MR算法,但是网上查了一下,发现hadoop的生态系统中的Mahout的项目已经实现了相应的算法,因此想先尝试着实时这个mahout的使用及效果。要想用mahout必须要部署到hadoop上咯。1、下载mahout的版本,并解压缩到本地通过http://mahout.apache.org/ 下载相应的版本,我下载的是mahout-distribution-0.9.tar.gz版...

weixin_29454359的博客 216

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mahout中的kmeans简单实例

在Mahout_in_Action这本书中,有个kmeans的简单实例,可书中只给了源代码,而并没有指出要导入哪些包才能正确运行 这本书在前面提到书中所有代码都是基于mahout0.4版本的,可是我发现这个kmeans的例子,却是基于mahout0.3的,有几个函数0.4版中是

aidayei的专栏 4123

Mahout-distrubution-0.9安装教程

1.下载安装包http://archive.apache.org/dist/mahout/0.9/mahout-distribution-0.9.tar.gz,下载完成之后,直接解压。 解压命令:tar -zxvf mahout-distribution-0.9.tar.gz2.配置环境变量在 /etc/profile或者~/.bash_profile中添加如下配置信息 MAHOUT_HOME

lqf的专栏 2332

mahout 0.9 连接mysql_Mahout0.9安装与配置(完全分布式模式下运行)

安装Mahout之前,一定要把hadoop装好,hadoop的安装方法可以参考我的前一篇随笔,我安装的是hadoop2.7.0,具体方法在此不做介绍。1.首先下载相应版本的Mahout:axel -n 10 http://archive.apache.org/dist/mahout/0.9/mahout-distribution-0.9.tar.gz2.解压:tar -zxvf mahout-d...

weixin_35647812的博客 193

mahout学习之二——mahout0.9kmeans聚类实例

最近学习《Mahout实战》,但是书中的代码是实用mahout0.5版本,很多地方在mahout0.9版本中已经改头换面了,经调试,阅读mahout0.9api, 运行结果如图: 修改代码如下: package cn.kelaile.hadooptest; import org.apache.hadoop.conf.Configuration; import or

決心的专栏 1299

Mahout快速入门教程

Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现、分类、聚类等。Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能。 一、Mahout安装、配置 1、下载并解压Mahout h...

apple01010105的博客 631

mahout部署实践

mahout部署实践

2157

mahout 0.9 连接mysql_mahout-distribution-0.9.tar.gz的安装的与配置、启动与运行自带的mahout算法...

不多说,直接上干货!首先,别在windows下搭建什么,安装什么Cygwin啊!直接在linux,对于企业里推荐用CentOS6.5,在学校里用Ubuntu。Mahout安装所需软件清单:软件        版本          说明操作系统    CentOS6.5        64位JDK      jdk1.7.0_79Hadoop      2.6.0Mahout     mahout...

weixin_33415023的博客 175

大数据基础(三)Ubuntu下基于Hadoop 2.6.2的Mahout 0.12.1安装和使用

Ubuntu下基于Hadoop 2.6.2的Mahout 0.12.1安装和使用 环境: Ubuntu Server 14.04.04 amd64 Hadoop 2.6.2  参考: http://itindex.net/detail/49323-mahout-%E5%AD%A6%E4%B9%A0-mahout 新版的配置有略微改动 1、下载 http://mirror.bi

星门学派(Star School) 3391
上一篇: 遍历集合时出现的异常Exception in thread "main" java.util.ConcurrentModificationException
下一篇: mahout将数据转化成序列化文件、稀疏向量
ucasliming
博客等级 码龄16年 126粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值