- 浏览: 235843 次
- 性别:
- 来自: 南京
最新评论
-
hnxyflypj:
那个csv数据在哪里呢
[Mahout] 使用Mahout 对Kddcup 1999的数据进行分析 -- Naive Bayes -
hj01kkk:
多谢赐教!
[Mahout] 使用Mahout 对Kddcup 1999的数据进行分析 -- Naive Bayes -
酷呀嗒:
给的文件没有main函数 这个怎么启动啊
Java实现的朴素贝叶斯分类器 -
RangerWolf:
caihongshijie6 写道你好,这里面用到的数据文件在 ...
Java实现的朴素贝叶斯分类器 -
caihongshijie6:
你好,这里面用到的数据文件在哪里找呢?
Java实现的朴素贝叶斯分类器
文章列表
Viterbi的算法在这边就不解释了。 主要可以参考:
(1) Wiki
详细介绍了算法的原理与python实现。
不过个人感觉看这个python的实现没太看懂。 于是乎自己在下面又写了一遍而且感觉相对来说要更清楚一些
(2) 知乎:谁能通俗的讲解下viterbi算法吗?
其中最高票的答案非常详细的一步步的描写了运算的过程
最好各位再在草稿纸上面写写画画以求彻底明白
最后贴一下我自己写出来的python实现:
# -*- coding: utf-8 -*-
# ---- init some data ----
# 隐藏变量, states
stat ...
主要参考: http://www.cnblogs.com/dennisit/p/3258664.html
原文写得非常好,非常详细。但是版本有一些老了,以其中的displayToken()中跟displayAllTokenInfo()已经需要修改。否则无法在最新的4.10上工作。
在最新的版本之中,需要:
(1)在stream的incrementToken之前增加一个reset的动作:
(2)(我使用JapaneseAnalyzer测试的结果) 这样显示的结果,会出现重复:
比如:
写道
原文:日本経済新聞でモバゲーの記事を読んだ======日文=======Sta ...
上一篇文章说的ReduceSide Join的一个缺点就是,在map方法之中,只对数据加了tag、提取了groupkey,没有做任何的数据过滤,这样在map-reduce之中的shuffle过程会造成大量的 磁盘IO使得效率降低。
这次使用的是Replicated Join,完成的 ...
Note:
1. 内容主要参考<Hadoop in Action> Chapter 5.2
2. 代码主要参考: http://qindongliang.iteye.com/blog/2052842
3. 这是基于老的API的实现,这种方法并不高效简洁
数据:(原始数据可以从movielens-1m里面去要,这里将原始数据进行了简单的修改方便演示与自测)
文件: u.user
结构: user id | age | gender | occupation | zip code
样例:
1|24|M|technician|85711
2|5 ...
注意:
1. 本人目前使用的版本是1.2.1,因此ChainMapper使用的还是old api。
2. 老的API之中,只支持 N-Mapper + 1-Reducer的模式。 Reducer不在链式任务最开始即可。
比如:
Map1 -> Map2 -> Reducer -> Map3 -> Map4
(不确定在新版的API之中是否支持 N-Reducer的模式。不过new api 确实要简单简洁很多)
任务介绍:
这个任务需要两步完成:
1. 对一篇文章进行WordCount
2. 统计出现次数超过5词的单词
Wor ...
同样是<Hadoop in Action> 上面的练习~
练习:
计算两个向量的内积,比如:
v1 = [1 2 3]
v2 = [2 3 4]
内积 = 2 + 5 + 12 = 19
我的输入文件:
1.0 2.0
3.0 4.0
1 1
即:
v1 = [1 3 1]
v2 = [2 4 1]
结果: 15
思路:
每行读取两个向量的两个元素并计算乘积,然后在Reduce之中进行求和。
注意:
如果在main函数之中,设定了setCombiner(Reduce.class) 最后结果会出错,因为和被计算了两次!
即算出来的 ...
题外话:
《Hadoop in Action》 是一本非常不错的交Hadoop的入门书,而且建议看英文版。此书作者的英文表达非常简单易懂。相信有一定英文阅读能力的同学直接用英文版就能非常容易的上手~
进入正题。 这个题目是《Hadoop in Action》 上面的一道题目,求出Top K的值。
我自己随便弄了一个输入文件:
g 445
a 1117
b 222
c 333
d 444
e 123
f 345
h 456
讲讲我的思路:
对于Top K的问题,首先要在每个block/分片之中找到这部分的Top K。并且由于只能输出一次,所以输 ...
假设hadoop运行在伪分布式的模式,并且本机直接用localhost访问
1. JobTracker: http://localhost:50030/jobtracker.jsp
2. DFS Heath Track
在这里面能直接点击下面的 “Browse filesystem” 查看上传上来的文件
我们在之前一篇WordCount的文章里面使用了下面这条语句:
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
这本身不起眼的一句话,其实有一个容易错的地方。
如果你遇到
写道
Type mismatch in key from map: expected org.apache.hadoop.io.LongWritable, recieved org.apache.hadoop.io.Text
这样的错误,那基本上就是因 ...
Hadoop就不介绍了~ 之后应该会补充一个如何在单机Ubuntu上面部署hadoop的文章。不过网上也一大把了~
先贴一个可以用的WordCount代码
package org.myorg;
import java.io.IOException;
import java.util.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop ...
通常,在网上找到的mahout的naive bayes的例子跟官网的例子,都是针对20 newsgroup. 而且通常是命令行版本。虽然能得出预测、分类结果,但是对于Bayes具体是如何工作,以及如何处理自己的数据会比较茫然。
在努力了差不多一个星期之后,终于有点成果。
这个例子就是使用mahout 0.9 对kddcup 1999 的数据进行分析。
第一步: 下载数据。
地址: http://kdd.ics.uci.edu/databases/kddcup99/
关于数据的一些简单的预处理,我们会在第二步进行。细心的你可能发现,有些数据是2007年上传的! ...
《Apache Mahout Cook》 第二章的标题是: Using Sequence Files – When and Why ?
看了半天也没看懂需要sequence file的原因。其实是因为我对hadoop不了解。
sequence file 是hadoop底下特有的一种key/value文件格式,而不是mahout自己特有的。而mahout需要hadoop,所以就一定需要sequence file~~~
这就是Why ~
具体请参考:http://mail-archives.apache.org/mod_mbox/mahout-user/201311.mbox/%3C1384299917.36018.YahooMailNeo@web163504.mail.gq1.yahoo.com%3E
虽然官方已经关掉了,但是在我的环境(Ubuntu 14.04 + Hadoop 1.2.1) 依然出错
官方bug链接:https://issues.apache.org/jira/browse/MAHOUT-1319
换成0.7就好了,囧 ~
在mahout的官网上面,有讲诉如何在命令行之中使用Logistic Regression对自带的donut.csv进行训练的例子。
现在我们要做的,是自己在java代码之中对iris的数据使用LR进行分析。
首先,我们要熟悉一下,使用LR需要哪些参数以及他们的作用。我们从《mahout实战》上面给出的命令行例子来了解一下:
$ bin/mahout trainlogistic --input donut.csv \
--output ./model \
--target color --categories 2 \
--predictors x y --types ...
mahout的完整运行还是需要hadoop的支持的,不过很多算法只需要能把hadoop的jar包加入到classpath之中就能正常运行。
比如我们在使用LogisticModelParameters的时候,会引用包
import org.apache.hadoop.io.Writable;
按照之前的文章,仅仅将mahout的包加入到classpath之中,就会提示找不到hadoop***
为了解决这个问题,就必须得通过maven进行项目引入搭建开发环境。
下面就是我在没有hadoop的Windows之中利用Eclipse进行mahout开发环境的搭建步骤。
如何下载并 ...