监督学习之k Nearest Neighbors算法

首先说kNN算法是一种有监督学习的分类算法。所谓有监督学习,就是在应用算法之前我们必须准备一组训练集,训练集中的每个实例都是由一些特征和一个分类标签组成;通常还会存在一个测试集,用来测试训练出来的分类模型的准确性。其实kNN算法并没有体现出有监督学习的所有特点,没有模型,只有算法。甚至可以说这就是一种暴力扫描法,运行效率上比较低效。


在理解算法之前,先要了解多维空间中两个点之间的距离的概念,这个应该不难,这里的距离使用高中数学中的欧式距离。

d=sqrt( ∑(xi1-xi2)^2 ) 这里i=1,2..n

Nearest Neighbors——最近的邻居——也就是说要判定一个点A属于哪一类,我们就要看离A点最近的那个点属于哪一类;再加一个k,就是说要使用离A点最近的k个点的类别信息来判定:如果k=10,其中有8个点是属于第一类,那么A点就属于第一类。这实际上就kNN算法的核心了。


还有一种情况:现实中的特征向量,可能包含各种维度,比如人的身高、体重、朋友数量,这三个维度的值的比对是没有意义的,具体到空间中的距离计算,可能就会产生某个维度的数据决定了向量之间的距离的情况。因此,我们必须对每个特征向量做标准化处理(normalization)。一般来说,我们可以将维度的值映射到0-1之间的位置上,很容易做到这点:对于每个特征的值,我们只需要应用以下的公式即可:

newValue = (oldValue-min)/(max-min)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值