写在前面:
学校课程要求用 Hadoop 实现朴素贝叶斯分类,这里总结了下大致的操作流程,帮助大家快速入门。
使用的是 windows 10,vmware15.5,ubuntu18.04.1,hadoop2.7.7
VMware只是一个虚拟机,需要在其中继续安装使用的操作系统。网上很多教程使用的操作系统为 centos,但是个人感觉如果使用图形化界面的话,占空间比较大,安装也不是很简便(主要是我不熟hhh),所以使用了比较拿手的 ubuntu。
如果非常倔强地使用了centos,或许可以参考这篇?(感觉很详细,而且是从 centos 下载开始讲解的):https://blog.csdn.net/m0_46413065/article/details/114667174?spm=1001.2014.3001.5501
具体的操作步骤可以参考微信公号 软件管家 的:https://mp.weixin.qq.com/s/vuaPF25PUVywgAA0tEvr8w
在使用上述的安装教程后,发现无法联网???需要在设置界面,打开硬件选项卡,在左边选择"网络适配器",然后在右边选择"NAT模式(N):用于共享主机的IP地址",点击确定。
参考这篇:https://blog.csdn.net/zhyulo/article/details/78730009
为了之后能非常快乐地使用VMware,在它弹出什么更新?之类的(记不太清了,总之是更新语言的)就无脑同意,让它自己麻溜地赶紧操作。下面是张截图:
还有就是要安装 VMWare tools,可以解决主窗口中的虚拟机窗口太小的问题,参考这篇:https://www.jianshu.com/p/9fca51d0d120
win11好像这时候还是不能复制粘贴、拖拽文件,参考这个:https://blog.csdn.net/weixin_50406679/article/details/126112735(我只用了前两部分就可以了)
大功告成!!!这样装完以后,就可以联网,可以输入中文,可以直接从win10拖拽文件过来,还可以用复制粘贴了!!!(在 VMware 中复制粘贴的快捷键可能不同)
主要是根据这篇,简单而且没有缺少步骤什么的:https://www.jb51.net/article/209042.htm#_label11
但是有的地方不是很清楚,建议使用上面的教程,如果有疑问,再学习下面这两个(这两个相当于一篇的上下):
http://dblab.xmu.edu.cn/blog/install-hadoop/、http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/
下面理一下基本思路和注意点:
项目内容:
实验数据:
数据在 NBCorpus 文件夹中,分为 Country 和Industry 类,这两个文件夹代表不同的分类,点开后又分别为多个子文件夹(这些子文件夹就是数据使用的基本单位了),每个子文件夹代表这个方面的多篇文章,里面的每个 .txt 文件为一篇文章分词后的结果。
后续需将每个类别中的文档随机分为训练集和测试集,训练集占70%,测试集占30%(比例看个人设置)
朴素贝叶斯原理:
实验之所以设置为贝叶斯,是因为 Bayes 不需要多次迭代,而 k-means 需要。
使用朴素贝叶斯方法进行文档分类,需要从给定的类别标签集合 C={c1,c2,…,cj} 中,为待分类文档 d 选择概率最大的标签,即 p(ci | d) 得到使的最大 ci 的作为 d 的分类结果。
可利用如下的贝叶斯公式将分类问题做进一步转化,公式中 p(ci | d) 的为后验概率/条件概率,指给定文档 d 属于类 ci 的概率;p(d | ci) 为似然概率,指给定文档类别 ci,由类别 ci 产生文档 d 的概率;p(ci) 为先验概率,指待分类文档的类别为 ci 的概率;p(d) 此时可看作常量,指词组成文档的概率。
从上述公式中可以看出,p(ci | d) 只与 p(d | ci) 和 p(ci) 有关,为两者的乘积。只需在训练集数据训练得到这两个数据即可。先验概率 p(ci) 的计算公式如下:
为便于计算似然概率 p(d | ci),假设文档中的每个term都是相互独立的,文档 d 中有 nd 个term:t1,t2,…,tnd,用 tk 表示某个特定的term,则似然概率 p(d | ci) 的计算公式如下:
代码在 github 上可以找到,这里贴两个:
https://github.com/ZhangQi1996/hust_cs_bayes
https://github.com/hutushanren/hadoopTask
在main类中定义和实现整个流程,主要分为四部分(仅提供一种思路):
很小白,这里查了很多才明白怎么操作。简单来说,可以有几种方式:
前两种似乎很难配置,所以用的最后一种。不会的直接搜索怎么 打包maven项目 就可以啦,这一步和hadoop分布式什么的没什么关系。
打包后将生成的 jar包 直接拖拽到 master 中,然后看这个B站的视频学习后面的操作,视频包括 数据的上传 和 jar包的使用(从1:40 看到4:50即可):Hadoop实战——对单词文本进行统计和排序
就是先在主机上启动 hadoop集群,然后就可以在浏览器中访问 htfs文件系统,再将数据上传到 htfs文件系统(创建文件夹后,上传训练集和测试集数据),最后执行 jar包。
因为要对 数据 和 jar包 进行操作,所以最好先进入存放这些的目录下,避免再添加所在目录。下面是我使用的命令行(仅供参考):
hadoop fs -mkdir /文件夹名称
hadoop fs -put train /文件夹名称/
hadoop fs -put test /文件夹名称/
hadoop jar bayes.jar com.bayes.Main