K最近邻算法(介绍)
来源:互联网 发布:聊城气象数据 编辑:程序博客网 时间:2024/06/02 04:54
问题
用K最近邻算法创建分类系统学习特征抽取学习回归,即预测数值学习K最近邻算法的应用案例和局限性
K最近邻(k-nearest neighbours, KNN)算法
K最近邻算法是指在一个坐标系中(前提是把元素放入坐标系【So,问题来了,怎么把他们放入坐标系?他们在坐标系的位置怎么确定?】),其中一个点的特性或者数值可以由离他最近的几个点求得,(原理是因为,他们所处的位置差不多,其会具有相当大的共性,他们之间更相似一些,这是一种猜测) 想法一:其实不用坐标系也可以,可以使用集合,对于一个未知的集合,可以与其他集合做交集,与其交集最大的几个集合与他最相似 【其实还是寻找共性,判断相似】 【So,问题是什么叫相似?相似的程度如何判定?】
第一个问题:特征抽取
对于不同的系统,不同元素需要考虑的特点不同,可以根据自己的标准将各元素进行数字化,以一个数值集合的形式表示一个元素的特征, 比如对于长方体,可以由长宽高三个标准度量,形成一个(x,y,z)的集合能否挑选合适的特征事关KNN算法的成败
第二个问题:相似程度的判定
现在已经使用一套标准将元素数值化, 一个元素可能有n个数值来表示,那么其就可以放入一个n维坐标系, 虽然当维数超过4时,我们很难想象这个坐标系具体的样子,可是这并不妨碍我们计算相似程度【愚蠢的自信。。。】 对于放入一个2维坐标系的两个点来说,一个为(x1,y1),另一个为(x2,y2),两点之间的距离为 sqrt( (x1-y1)^2 +(x2-y2)^2 )【这个叫毕达哥拉斯公式,其实就是求空间中两点的距离公式】,对于三维坐标系则是以此类推, 我们使用这个公式的结果来比较元素之间的相似程度。 【除了计算距离的方法,还有一种计算角度的方法,叫余弦相似度,要深入KNN还得再看看】
既然我们可以对一个未知元素根据其相邻元素判断他与其他元素的相似程度,那么可不可以猜测这个元素的特点(这里所说的特点不是将其定位在坐标系中的特点,是额外的特点)呢?
可以,这就是回归。其实也是根据其最近的k近邻来推测他的特点。 在对元素打标签时,需要使用合适的特征来判断元素。
机器学习简介
KNN算法对于机器学习可能很初级,不过正是因为简单,他反而可以让你很快的了解一下,还能有些理解。机器学习是想让电脑更聪明,而KNN算法通过模仿人的解决方法,可以对一些行为做出预测,可以对大量元素进行分类,可以根据预测的结果进行推荐,看起来还是挺聪明的。训练 对于机器学习,首先要学会抽取元素的特征,这需要大量的例子,提取的特征可能很复杂,这一过程叫做训练,让他有些基础数据,要不怎么比对,也没法分类了。朴素贝叶斯分类器 在经过大量训练后,再接触到新的元素可以使用朴素贝叶斯分类器判断其属于某个类别的概率,这个和KNN挺像的 至于朴素贝叶斯分类器怎么实现的,还没看。。。
阅读全文
0 0
- K最近邻算法(介绍)
- k最近邻算法
- K-最近邻算法
- K-最近邻算法
- K最近邻算法
- K-最近邻算法(KNN)
- K最近邻算法(KNN)
- KNN最近邻算法(K-NearestNeighbor)
- K最近邻分类算法(KNN)
- 最近邻与K近邻算法思想
- KNN K最近邻算法
- K最近邻算法(kNN)
- k最近邻算法(kNN)
- python -- K最近邻算法
- K-近邻算法详细介绍
- K最近邻算法(KNN,K-NearestNeighbor)
- 经典算法(4):K最近邻算法(KNN)
- 第九章 KNN(K最近邻分类算法)
- JS分页
- 支付宝
- 【jzoj5358】【NOIP2017提高A组模拟9.12】【BBQ】
- 线性化与串行化比较
- C++编程题1——输入字符串,输出数字最小的值
- K最近邻算法(介绍)
- MATLAB-轨道分叉
- spring父子容器
- python脚本制作dlib数据集
- Java泛型
- php5.5新特性之yield理解
- 1035. 插入与归并
- Java经典面试题(其三)——JVM原理和调优
- 观察者模式