论文部分内容阅读
在数据挖掘及其它研究领域,k-近邻算法k-NN是一种广泛用于不同分类用途的算法。然而,k-NN倾向于处理数值类型的数据集,这就限制了它用于科学及工程领域的许多问题。而且,随着其知识库规模的变大,其效率也成为一个瓶颈问题,因为它总是比较所有样本以发现最佳匹配。 为了扩展其应用范围到非数值类型,将编辑距离引入到k-NN算法中,以便它能向数值数据一样发现最佳匹配。因为在k-NN中涉及数值计算,将编辑距离和Levenshtein距离结合以计算两个样本之间的距离。基于上述方法,具有数值和非数值类型的样本可以比较和匹配。 为了提高样本匹配过程的计算速度,将并行计算方法引入到k-NN算法中。考虑到OpenMp框架能够支持网络中的多处理器,并且可以利用处理器中的多核进行并行线程计算,为此,使用Code::Blocks跨平台的C/C++集成开发环境同OpenMp结合,实现了k-NN算法的线程并行计算。 提出的算法被设计成能够处理数值和非数值列的任何数据集。对线性和并行的k-NN算法进行了试验,并比较了这些试验所产生的结果。同线性k-NN算法相比,并行k-NN在数据集足够大能够弥补并行线程负载的情况下更快。如果数据集非常小则并行算法使用起来不够有效。 在试验中,提出的扩展并行k-NN算法能够按预期方式工作,这表明该扩展并行化的k-NN算法能够被广泛及有效地应用于大规模数据集。