k近邻算法(kNN):简单粗暴

kNN(k-nearest neighbors algorithm)

这是一个简单粗暴的分类器(Classifier)算法,分类效果不错,但是对于异常值不敏感,而且算法的复杂度高,每次计算都要遍历整个训练集(Training Data Set),效率不高.
这里写图片描述

距离量度相似性 #1

kNN算法的思想就是把整个训练集在依照特征值坐标轴标定后,把测试量标定到特征值空间后,计算测试量与所有训练数据的距离,按照距离从小到大排列,选取距离最小的k个训练点,统计这k个点的Labels数量最多的Label就是kNN得到的分类结果(简单说,就是测试量和训练集的哪个(些)量最相似)。
这里写图片描述

归一化不同特征量距离 #2

考虑两组特征量(A、B),A的数量级为1,B的数量级为100000,当用距离来衡量相似性时,B的大小远大于A,所以只有B在起作用,A被忽略了,然而我们是想A、B的权重一样的,所以我们要把A、B归一化,以使得A、B一起决定距离.
归一化公式:这里写图片描述

python 代码如下:

def autoNorm(dataSet):
    minVals = dataSet.min(0)
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normDataSet = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = (dataSet-tile(minVals, (m,1)))/tile(ranges, (m,1))
    return normDataSet, ranges, minVals

算法构建与应用 #3

手写数字识别demo:

相关参数:

k=15
2.3M训练集数据
准确度较高(与训练集和个人书写习惯相关性大)

这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值