一.什么是K近邻? K近邻是一种基本的分类和回归方法. 在分类时,对新的实例,根据其K个最近邻的训练实例的类别,通过多数表决权等方式预测其类别. 通俗的讲,找K个和其关系最近的邻居,哪个类别的邻居多,就把它划分到哪一类 特性: (1)多分类 (2)判别模型 (3)三个基本要素:K值选择.距离度量.分类决策规则 (4)K=1时,称为最近邻算法 二.K近邻模型 1.模型:K近邻法的模型对应特征空间的一个划分,每一个划分对应一个类别 2.距离度量: (1)通常使用欧氏距离 (2)更一般的Lp距离 3.…
1.kNN算法的思想:给定一个训练数据集,对新的输入实例,在训练集中找到与该实例最近邻的k个实例,这k个实例的多数属于某类,就把输入实例分为这个类. 2.算法 (1)根据给定的距离度量,在训练集T中找出与实例x最邻近的k个点,涵盖着k个点的邻域记做; (2)在中根据分类决策规则(如多数表决)决定x的类别y: 其中,I为指示函数,即当yi=cj时I为1,否则为0. 距离度量一般是Lp距离或者是Minkowski距离. xi,xj的Lp距离定义为: 这里p≥1,当p=2时,称为欧氏距离:当p=1时,…
1.前言 之前我一直对于“最大似然估计”犯迷糊,今天在看了陶轻松.忆臻.nebulaf91等人的博客以及李航老师的<统计学习方法>后,豁然开朗,于是在此记下一些心得体会. “最大似然估计”(Maximum Likelihood Estimation, MLE)与“最大后验概率估计”(Maximum A Posteriori Estimation,MAP)的历史可谓源远流长,这两种经典的方法也成为机器学习领域的基础被广泛应用. 有趣的是,这两种方法还牵扯到“频率学派”与“贝叶斯学派”的派别之争,…
  之前两篇随笔介绍了kd树的原理,并用python实现了kd树的构建和搜索,具体可以参考 kd树的原理 python kd树 搜索 代码 kd树常与knn算法联系在一起,knn算法通常要搜索k近邻,而不仅仅是最近邻,下面的代码将利用kd树搜索目标点的k个近邻. 首先还是创建一个类,用于保存结点的值,左右子树,以及用于划分左右子树的切分轴 class decisionnode: def __init__(self,value=None,col=None,rb=None,lb=None): sel…
通过上文可知k近邻算法的基本原理,以及算法的具体流程,kd树的生成和搜索算法原理.本文实现了kd树的生成和搜索算法,通过对算法的具体实现,我们可以对算法原理有进一步的了解.具体代码可以在我的github上查看. 代码 #!/usr/bin/python3 # -*- coding:utf-8 -*- import sys import numpy as np class Kdtree(object): ''' 类名: Kdtree 用于存储kd树的数据 成员: __value: 训练数据,保存数…
全文引用自<统计学习方法>(李航) K近邻算法(k-nearest neighbor, KNN) 是一种非常简单直观的基本分类和回归方法,于1968年由Cover和Hart提出.在本文中,主要介绍了分类方法.其输入为特征空间中的点,输出为给定实例的类别,可以选择多个类输出.K近邻算法通过给定的训练集对特征空间进行分类,分类时,对于输入的实例,通过判断其最近的k个实例的类别,选择多数类别为本实例的最终分类.因此,k近邻算法本质上并不具有显示的学习过程. 本篇文章通过介绍K近邻算法的k值选择.距离…
/*先把标题给写了.这样就能经常提醒自己*/ 1. k近邻算法 k临近算法的过程,即对一个新的样本,找到特征空间中与其最近的k个样本,这k个样本多数属于某个类,就把这个新的样本也归为这个类. 算法  输入:训练数据集 其中为样本的特征向量,为实例的类别,i=1,2,…,N:样本特征向量x(新样本): 输出:样本x所属的类y. (1)根据给定的距离度量,在训练集T中找出与x最相邻的k个点,涵盖这k个点的邻域记作: (2)在中根据分类决策规则(如多数表决)决定x的类别y:              …
书中存在的一些疑问 kd树的实现过程中,为何选择的切分坐标轴要不断变换?公式如:x(l)=j(modk)+1.有什么好处呢?优点在哪?还有的实现是通过选取方差最大的维度作为划分坐标轴,有何区别? 第一种方法网上也没具体的解释,我不是很清楚其原因(可能要去论文上找原因). 不过第二种方法的话,方差越大,说明这个维度数据的相似性就越差,就越容易通过选取中点的方式将数据集分开,kd树的效率就越高,试想如果你挑了一个维度其中数据全为一样,那么kd树的建立过程就无法将使用挑选中位数的方法来达到,而且后面的…
目标:预测未知数据(或测试数据)X的分类y 批量kNN算法 1.输入一个待预测的X(一维或多维)给训练数据集,计算出训练集X_train中的每一个样本与其的距离 2.找到前k个距离该数据最近的样本-->所属的分类y_train 3.将前k近的样本进行统计,哪个分类多,则我们将x分类为哪个分类 # 准备阶段: import numpy as np # import matplotlib.pyplot as plt raw_data_X = [[3.393533211, 2.331273381],…
本文简述了以下内容: (一)生成式模型的非参数方法 (二)Parzen窗估计 (三)k近邻估计 (四)k近邻分类器(k-nearest neighbor,kNN) (一)非参数方法(Non-parametric method) 对于生成式模型(Generative model)来说,重要的地方在于类条件概率密度 $p(\textbf x|\omega_i)$ 的估计.上一篇介绍的参数方法,假定其是一个固定的分布密度形式,然后估计这个显式表达的函数中未知的参数.但这里存在两个问题:首先,假定的形式…