如何用java训练mahout?
Posted
技术标签:
【中文标题】如何用java训练mahout?【英文标题】:How to train mahout with java? 【发布时间】:2013-06-29 13:26:15 【问题描述】:我需要按特征创建分类器,我有 1500 万行数据,例如:
"app_entertainment" : 1,
"app_widgets" : 2,
"arcade" : 8,
"books_and_reference" : 2,
"comics" : 0,
"brain" : 20,
"business" : 0,
"cards" : 5,
"casual" : 1,
"communication" : 4,
"education" : 0,
"finance" : 1,
"game_wallpaper" : 0,
"game_widgets" : 0,
"health_fitness" : 0,
"libraries_demo" : 0,
"racing" : 1,
"lifestyle" : 1,
"media_video" : 0,
"medical" : 0,
"music_and_audio" : 7,
"news_magazines" : 2,
"personalization" : 1,
"photography" : 0,
"productivity" : 4,
"shopping" : 1,
"social" : 1,
"sports_apps" : 1,
"sports_games" : 7,
"tools" : 15,
"transportation" : 2,
"travel_and_local" : 8,
"weather" : 3,
"app_wallpaper" : 0,
"entertainment" : 0,
"health_and_fitness" : 0,
"libraries_and_demo" : 0,
"media_and_video" : 0,
"news_and_magazines" : 0,
"sports" : 0
对于这样的每个数据集,我也知道它是真是假, 布尔值是拥有此数据集的用户是否点击了广告。
如何使用 mahout 训练分类器,训练后如何分类?
我在网上找到的一切都非常抽象,如何通过 java 做的例子并不多
【问题讨论】:
你试过什么? 我试图弄清楚如何训练它 你试图弄清楚如何训练它? 你在哪里卡住了,错误是什么? 【参考方案1】:网上关于 Mahout 的资料很少。我参考了 Mahout 源码和Mahout in Action中的源码。
分类可以参考20newsgroup源码。
使用 NavieBayes 分类器的简单示例。向量就是数据集。
public List<String> classifyCase(Vector vector)
TreeMap<Double, String> resultMap = new TreeMap<Double, String>();
Vector result = classifier.classifyFull(vector);
for (Vector.Element element: result)
int categoryId = element.index();
double score = element.get();
resultMap.put(-score, labels.get(categoryId));
return new ArrayList<String>(resultMap.values());
【讨论】:
这是我见过的最糟糕的例子,我需要一个简单的代码示例来说明如何训练和如何分类,这不好 为什么你认为这是最坏的情况?我想大多数人会参考这些示例来编写 Java 代码,因为网上的示例很少。 因为不是用 4-5 行训练来做一些简单的例子,而是展示如何从文件目录中进行操作,我不需要它,而且它非常令人困惑,我知道如何从文件中读取,但是他们把它塞进了例子中,使它不可读...... 我猜你的意思是 HDFS 编码。 Mahout 使用 Hadoop,因此有许多 FileSystem 编码。但是您可以忽略这些代码,并在本地运行 Mahout。基本上,您可以只使用 Configuration c = new COConfiguration();文件系统 fs = FileSystem.get(配置);那么就不需要考虑其他Hadoop相关的代码了以上是关于如何用java训练mahout?的主要内容,如果未能解决你的问题,请参考以下文章
如何用三种不同的笔迹训练相同数字的tesseract-ocr?