算法浅谈之KNN算法

算法和数据,作为机器学习或者深度学习中最重要的两把利剑,合力帮助人们解决许多无法靠人力或者简单堆叠去解答的问题。然而,现如今的算法发展突飞猛进,即使是再优秀的人也不可能了解所有的算法(大神可能懂的多或者学的快,不在本推文的读者之列)。只是,对于许多像笔者这种半路出家的生信分析人员而言,虽然在广度上对众多算法有一定了解,然而,在深度上却远远落后于那些专注于做算法的大神们。但是,无论何时进入生信或者数据分析领域,学习和了解一些算法的常规基础,可以帮助我们在算法应用上变得稍微游刃有余一点(笔者自以为)。因此,笔者尝试在后续的推文中将尝试将算法以一种简单直接的方式进行展示,方便读者进行了解。不过,读者需要明白,虽然推文中介绍的算法可能不难理解,但是现如今真正使用的这些算法更多的是这些基础上添加了包括统计学在内的各种精妙设计,想要精通绝非意识。本推文的目的仅仅是让读者初步了解某个算法,而非精通。
那么下面,我们开始第一个算法的介绍KNN。
一 算法介绍
算法原理其实非常简单,就是以下几点:
首先,确定其余已知类别的点。
其次,计算该点到每个已知类别点的距离。
第三,对这些点进行排序。
第四,选取前K个最近的点,并计算所分属每个类别的频率,并将频率出现最高的类别作为该点的预测分类。

最后,通过设定K值我们就能够确定当前黑点具体属于哪一类。
二 惯例小结
其实这一算法非常简单,即不需要训练,也无需消耗大量的内存和计算资源。然而,先通过KNN这种简单的算法,我们可以初步了解到算法的本质其实就是抽象的事物具象化,并以一定的规则或者函数表示方式来展示(自定义,非官方,错了不认)。当然,今天的推文只是抛砖引玉,后面将依次介绍包括随机森林、决策树、线性回归等等算法,欢迎持续关注‘算法浅谈’系列
Multi-omics Hammer软件下载地址:
https://github.com/wangjun258/Multi-omics-Hammer
Multi-omics Visual软件下载地址:https://github.com/wangjun258/Multi_omics_Visual/releases/tag/Multi_omics_Visual_v1.03
PS:因为本软件是用python脚本撰写,调用了部分依赖包,用户首次使用需要安装python以及对应的包,安装之后便可永久使用。
本公众号开发的相关软件,Multi-omics Hammer软件和Multi-omics Visual软件欢迎大家使用。文末是本公众号在其他平台的账户,也欢迎大家关注并多提意见。
简书:WJ的生信小院
公众号:生信小院
博客园:生信小院
最后,也欢迎各位大佬能够在本平台上:1传播和讲解自己发表的论文;2:发表对某一科研领域的看法;3:想要达成的合作或者相应的招聘信息;4:展示自己以寻找博后工作或者博士就读的机会;5:博导提供博后工作或者博士攻读机会,都可以后台给笔者留言。希望本平台在进行生信知识分享的同时,能够成为生信分析者的交流平台,能够实现相应的利益互补和双赢(不一定能实现,但是梦想总得是有的吧)。
另外,怎么说呢,投币也可,不强求,但奢求。


