Skip to content

Latest commit

 

History

History
31 lines (17 loc) · 1.78 KB

软件架构.md

File metadata and controls

31 lines (17 loc) · 1.78 KB

软件架构

本项目的软件架构如下图所示:

1. 算法层

因为本项目是基于Hadoop MapReduce框架实现的分布式KNN算法,所以最底层的软件是Hadoop框架。在Hadoop框架之上,分别是:

  • 数据集抽象(Dataset Abstraction):使我们的软件能处理如Iris数据集等不同的数据集。
  • MapReduce算法(MR Algorithm):基于MapReduce的KNN算法的核心实现。
  • 实用工具(Utilities):诸如文件系统操作、日志模型、数据处理和配置文件等公共代码。

这一层称为算法层,它是所有实验的基础。

2. Java API层

但是,因为MapReduce的输入输出是基于文件的,在Java中调用不太方便,为了能使最顶层的实验逻辑使用更方便的接口,我们在算法层上加入了Java API层,对算法的输入输出以及配置文件进行封装,提供基于Java对象的接口。同时因为交叉验证需要对训练数据进行划分,并且还有诸如Boostrap等验证算法性能的方法,所以我们提供了一个验证数据生成的模块(Validation Data Generation),为上面的实验层服务。

3. 实验层

位于最顶层的是实验层,它提供的实验有:

  • 交叉验证实验:能在一个数据集的训练集上进行交叉验证( KnnExperiment类)
  • KNN预测:能对一个输入的测试集进行预测并统计正确率(KnnPredictor类)
  • K值调优实验:能在一个数据集上对不同的K值测量算法的性能,从而找出最优的K值(KnnFineTune类)

通过这种分层的软件架构,我们的项目顺利实现了必须的功能,获得了实验结果。同时,分层的结构使得代码结构清晰明了,便于维护。