博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用艺术家的整数ID映射将标签转换为向量
阅读量:6195 次
发布时间:2019-06-21

本文共 1880 字,大约阅读时间需要 6 分钟。

/*** * @author YangXin * @info Mapper选择艺术家的整数特征ID然后建立单个特征的向量。这些一维的部分 * 向量会传给Reducer,后者会将这些向量简单地进行联结。生成一个完整的向量。

*/ package unitTwelve; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.regex.Pattern; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.DefaultStringifier; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.util.GenericsUtil; import org.apache.mahout.math.NamedVector; import org.apache.mahout.math.SequentialAccessSparseVector; import org.apache.mahout.math.VectorWritable; public class VectorMapper extends Mapper<LongWritable, Text, Text, VectorWritable>{ private Pattern splitter; private VectorWritable writer; private Map<String, Integer> dictionary = new HashMap<String, Integer>(); @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{ String[] fields = splitter.split(value.toString()); if(fields.length < 4){ context.getCounter("Map", "LinesWithErrors").increment(1); return; } String arrtist = fields[1]; String tag = fields[2]; double weight = Double.parseDouble(fields[3]); NamedVector vector = new NamedVector(new SequentialAccessSparseVector(dictionary.size()), tag); vector.set(dictionary.get(value), weight); writer.set(vector); context.write(new Text(tag), writer); } @Override protected void setup(Context context) throws IOException, InterruptedException{ super.setup(context); Configuration conf = context.getConfiguration(); DefaultStringifier<Map<String, Integer>> mapStringifier = new DefaultStringifier<Map<String, Integer>>(conf, GenericsUtil.getClass(dictionary)); dictionary = mapStringifier.fromString(conf.get("dictionary")); splitter = Pattern.compile("<sep>"); writer = new VectorWritable(); } } </span></strong>

转载地址:http://fmuca.baihongyu.com/

你可能感兴趣的文章
wget参数用法详解
查看>>
安卓自学应用程序生命周期法
查看>>
【COCOS2D-X(1.X 2.X)】Json(cpp版)以及添加自定义字体库教程
查看>>
使用curl命令查看访问url的时间
查看>>
whois
查看>>
python添加环境变量
查看>>
Linux 新手容易犯的 7 个错误
查看>>
火狐浏览器快捷操作
查看>>
spoj3105 MOD - Power Modulo Inverted(exbsgs)
查看>>
DP-01背包 (题)
查看>>
WinForm中跨线程操作控件
查看>>
CODING 敏捷实践完全指南
查看>>
unittest测试框架和测试报告的输出实例(一)
查看>>
PYTHON-字符编码
查看>>
collectionview 的相关设置
查看>>
【node.js】回调函数
查看>>
Phalcon 訪问控制列表 ACL(Access Control Lists ACL)
查看>>
Android Categroy 详解大全
查看>>
java中的定时器
查看>>
【翻译】EXTJS 编码风格指南与实例
查看>>