准备Mahout所用的向量ApplesToVectors

<strong><span style="font-size:18px;">/***
 * @author YangXin
 * @info 准备Mahout所用的向量
 * 将苹果的信息转化为输入的向量
 */
package unitEight;

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.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.mahout.math.DenseVector;
import org.apache.mahout.math.NamedVector;
import org.apache.mahout.math.VectorWritable;

/**
 * 我们能够使用向量的名字或描写叙述为键,此处为NameVector,而向量本身作为值。

* Mahout的Vector类没有实现Writable接口。以避免他们和Hadoop直接耦合。

* 但能够用VectorWritable类来封装一个Vector并使之为Writable。

* 即Mahout中的向量能够使用VectorWritable类写入SequenceFile。

*/
public class ApplesToVectors {
	public static void main(String[] args) throws Exception{
		List<NamedVector> apples = new ArrayList<NamedVector>();
		NamedVector apple;
		apple = new NamedVector(new DenseVector(new double[]{0.11, 510, 1}), "Small round green apple");
		apples.add(apple);
		apple = new NamedVector(new DenseVector(new double[]{0.23, 650, 3}), "Large oval red apple");
		apples.add(apple);
		apple = new NamedVector(new DenseVector(new double[]{0.09, 630, 1}), "Small elongated red apple");
		apples.add(apple);
		apple = new NamedVector(new DenseVector(new double[]{0.25, 590, 3}), "Large round yellow apple");
		apples.add(apple);
		apple = new NamedVector(new DenseVector(new double[]{0.18, 520, 2}), "Medium oval green apple");
		Configuration conf = new Configuration();
		FileSystem fs = FileSystem.get(conf);
		Path path = new Path("E:\\apples.txt");
		SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf, path, Text.class, VectorWritable.class);
		VectorWritable vec = new VectorWritable();
		for(NamedVector vector:apples){
			vec.set(vector);
			writer.append(new Text(vector.getName()), vec);
		}
		writer.close();
		SequenceFile.Reader reader = new SequenceFile.Reader(fs, new Path("E:\\apples.txt"), conf);
		Text key = new Text();
		VectorWritable value = new VectorWritable();
		while(reader.next(key, value)){
			System.out.println(key.toString() + " " + value.get().asFormatString());;
		}
		reader.close();
	}
}
</span></strong>

时间: 2024-10-13 15:53:48

准备Mahout所用的向量ApplesToVectors的相关文章

mahout向量

一.mahout三种向量: 在mahout中,向量被实现为三个不同的类,每个类都是针对不同场景优化的:DenseVector.RandomAccessSparseVector和SequentialAccessSparseVector. 1.DenseVector可被视为一个double型数组,其大小为数据中的特征个数.因为不管数组的元素之是不是0,数组中所有元素都被预先分配了空间.我们称之为密集的(dense). 2.RandomAccessSparseVector被实现为integer型和do

Hadoop里的数据挖掘应用-Mahout——学习笔记&lt;三&gt;

之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X的笔记 由于平时对数据挖掘做的比较多,所以优先看Mahout方向视频. Mahout有很好的扩展性与容错性(基于HDFS&MapReduce开发),实现了大部分常用的数据挖掘算法(聚类.分类.推荐算法)不过数据挖掘调参和业务理解是关键,个人觉得真正想学习的话,还是看正规机器学习的课程比较好. 这里省略了大部分比较技术那一块的笔记... 虽然mahout在速度上有天然优势.但R/Python其实也在接入hadoo

探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类

聚类分析 什么是聚类分析? 聚类 (Clustering) 就是将数据对象分组成为多个类或者簇 (Cluster),它的目标是:在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大.所以,在很多应用中,一个簇中的数据对象可以被作为一个整体来对待,从而减少计算量或者提高计算质量. 其实聚类是一个人们日常生活的常见行为,即所谓"物以类聚,人以群分",核心的思想也就是聚类.人们总是不断地改进下意识中的聚类模式来学习如何区分各个事物和人.同时,聚类分析已经广泛的应用在许多应用中,包

首届CCF真题4-无线网络

问题描述 目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都 固定在某个点上.任何两个无线路由器只要距离不超过 r 就能互相建立网 络连接. 除此以外,另有 m 个可以摆放无线路由器的位置.你可以在这些位置 中选择至多 k 个增设新的路由器. 你的目标是使得第 1 个路由器和第 2 个路由器之间的网络连接经过尽 量少的中转路由器.请问在最优方案下中转路由器的最少个数是多少? 输入格式 第一行包含四个正整数 n,m,k,r.(2 ≤ n ≤ 100,1 ≤ k ≤ m ≤ 100,

记一次在node.js中使用crypto的createCipheriv方法进行加密时所遇到的坑

Node.js的crypto模块提供了一组包括对OpenSSL的哈希.HMAC.加密.解密.签名,以及验证等一整套功能的封装.具体的使用方法可以参考这篇文章中的描述:node.js_crypto模块. 本文重点介绍在使用createCipheriv方法时所遇到的坑.对应的解密算法createDecipheriv应该是一样的问题. 按照文档中的描述,createCipheriv方法接受三个参数:algorithm用于指定加密算法,如aes-128-ecb.aes-128-cbc等:key是用于加密

mahout推荐15-在hadoop上运行MapReduce

详情可以参考<Mahout实战>的第六章 代码: package mahout.wiki; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.PriorityQueue; import java.util.Queue; import java

Mahout分布式运行实例:基于矩阵分解的协同过滤评分系统

Apr 08, 2014  Categories in tutorial tagged with Mahout hadoop 协同过滤  Joe Jiang 前言:之前配置Mahout时测试过一个简单的推荐例子,当时是在Eclipse上运行的,由于集成插件的缘故,所以一切进行的都比较顺利,唯一不足的是那是单机运行的,没有急于分布式系统处理.所以基于测试分布式处理环境的目的,下午找了一个实例来运行,推荐系统原型是一个电影评分的系统. 一.问题描述 对于协同过滤(Collaborative Filt

Mahout初步认识

Apache Mahout项目主要包括以下五个部分: 频繁模式挖掘:挖掘数据中频繁出现的项集. 聚类:将诸如文本.文档之类的数据分成局部相关的组. 分类:利用已经存在的分类文档训练分类器,对未分类的文档进行分类. 推荐引擎(协同过滤):获得用户的行为并从中发现用户可能喜欢的事务. 频繁子项挖掘:利用一个项集(查询记录或购物目录)去识别经常一起出现的项目. 在Mahout实现的机器学习算法: 算法类 算法名 中文名 分类算法 Logistic Regression 逻辑回归 Bayesian 贝叶

mahout贝叶斯算法拓展篇3---分类无标签数据

代码测试环境:Hadoop2.4+Mahout1.0 前面博客:mahout贝叶斯算法开发思路(拓展篇)1和mahout贝叶斯算法开发思路(拓展篇)2 分析了Mahout中贝叶斯算法针对数值型数据的处理.在前面这两篇博客中并没有关于如何分类不带标签的原始数据的处理.下面这篇博客就针对这样的数据进行处理. 最新版(适合Hadoop2.4+mahout1.0环境)源码以及jar包可以在这里下载Mahout贝叶斯分类不含标签数据: 下载后参考使用里面的jar包中的fz.bayes.model.Baye