[mahout in action]mahout中用于推荐引擎的数据结构(二)
2015-08-15 19:17
483 查看
DataModel是在Mahout中封装推荐引擎输入数据的抽象接口。实现类包括GenericDataModel,FileDataModel
mahout中读取数据的方式有很多种,可以分为 手动录入,从file读取,从数据库读取
这里参考 《mahout in action》简单说一下手动录入方式,以及从file读取的方式。从数据库读取可参考API文档
手动:
从file读取,这是个经常使用的方法
文件的每一行包括 User ID, item ID, preference value, 用Tab来分割也可以。
压缩格式的文件例如 .zip 或者 .gz 都可以,如果数据特别大的话,用压缩格式是个很好的选择
那么当数据有更新的时候,可以调用 Refreshable 接口的方法, reload data。同时,实践中我们希望更新所有跟这些数据相关的objects,所以一般这样写:
refresh的方法是reload,但是如果只有一小部分data需要更改,用refresh显然是效率很低的,所以 FileDataModel支持
update files
update的文件中,可以新增,修改,和删除。例如:
1, 108, 3.0
1, 103,
更新user 1对item 108 的评分为3.0, 删除user 1对item 103的评分
需要update的file要跟原来的data file在同一个文件夹下,命名需要有相同的prefix。
例如原data file 为 foo.txt.gz, 则更新的data file可以是 foo.1.txt.gz, foo.2.txt.gz。
mahout中读取数据的方式有很多种,可以分为 手动录入,从file读取,从数据库读取
这里参考 《mahout in action》简单说一下手动录入方式,以及从file读取的方式。从数据库读取可参考API文档
手动:
FastByIDMap<PreferenceArray> preferences = new FastByIDMap<PreferenceArray>(); PreferenceArray = prefsForUser1 = new GenericUserPreferenceArray(10); prefsForUser1 . setUserID(0, 1L); prefsForUser1 . setItemID(0, 101L); prefsForUser1 . setValue(0, 3.0f): prefsForUser1 . setItemID(1, 102L); prefsForUser1 . setValue(1, 4.5f); … … ( 8 more ) preferences.put(1L, prefsForUser1); DataModel model = new GenericDataModel( preferences );
从file读取,这是个经常使用的方法
DataModel model = new FileDataModel(new File(“ratings.csv"));
文件的每一行包括 User ID, item ID, preference value, 用Tab来分割也可以。
压缩格式的文件例如 .zip 或者 .gz 都可以,如果数据特别大的话,用压缩格式是个很好的选择
那么当数据有更新的时候,可以调用 Refreshable 接口的方法, reload data。同时,实践中我们希望更新所有跟这些数据相关的objects,所以一般这样写:
DataModel dataModel = new FileDataModel( new file(“input.csv”); Recommender recommender = new SlopeOneRecommender(dataModel); ... recommender.refresh(null); // refresh datamodel, then itself
refresh的方法是reload,但是如果只有一小部分data需要更改,用refresh显然是效率很低的,所以 FileDataModel支持
update files
update的文件中,可以新增,修改,和删除。例如:
1, 108, 3.0
1, 103,
更新user 1对item 108 的评分为3.0, 删除user 1对item 103的评分
需要update的file要跟原来的data file在同一个文件夹下,命名需要有相同的prefix。
例如原data file 为 foo.txt.gz, 则更新的data file可以是 foo.1.txt.gz, foo.2.txt.gz。
相关文章推荐
- [mahout in action]mahout中用于推荐引擎的数据结构(一)
- nginx源码分析2———基础数据结构六(ngx_hash_keys_arrays_t)
- 数据结构 字符串模式匹配之KMP算法
- C源码@数据结构与算法->AVL树
- 数据结构概述
- 数据结构 多线程安全队列基于数组实现
- PAT《数据结构学习与实验指导》实验项目集 2-13
- PAT《数据结构学习与实验指导》实验项目集 2-12
- 数据结构之并查集(Union-Find)
- 【数据结构与算法】字符串匹配之BF&KMP算法
- C源码@数据结构与算法->二分查找树(Binary Search Tree)
- 数据结构--建立词索引
- 数据结构--队列
- 常用数据结构_排序_查找练习
- PAT《数据结构学习与实验指导》实验项目集 2-11
- 数据结构:二叉树的基本操作(JAVA实现)
- 数据结构(Java语言)——BinarySearchTree简单实现
- 浅谈数据结构系列 栈和队列
- R语言学习笔记(一)——数据结构与基本运算
- 数据结构实验:连通分量个数