《机器学习实战》学习笔记---KNN

来源:互联网 发布:fft c语言代码 编辑:程序博客网 时间:2024/06/14 09:31

  1. KNN算法的优缺点:
    (1)精度高,对异常值不敏感
    (2)计算法复杂度高,空间复杂度高,无法给出任何数据的基础结构信息
    (3)适用于数值型和标称型数据
  2. 工作原理:
    (1)已知:每组数据与其对应的类别标签
    (2)计算待分类数据与每组已知数据间的欧式距离
    (3)将得到的距离排序
    (4)选出k组距离最近的对应的已知数据
    (5)统计筛选出的已知数据类别标签,将类别标签最多者作为预测数据标签
  3. Python实现步骤:

    (1)获取已知数据特征data和类别标签label
    (2)选取部分已知数据作为测试数据集TestData和类别标签TestLabel,剩余部分存入data和label
    (3)计算每组测试数据集与data列表中每组数据间的欧式距离,注意个数据间的量级应相同,若不同,则进行归一化。通过构造calDis(vector,data)函数来计算vector与data中每行间的距离distance
    (4)对每一组测试数据,将计算得到的距离排序:argIndex=distance.argsort()
    (5)获取前k个距离最小的类别标签:

    for j in range(k):        labelIndex[j]=TrainLabel[argIndex[j]]

    (6)统计每个类别标签出现的次数,将出现次数最多的类别标签作为分类结果:

    sortedClassCount = sorted(labelIndex.iteritems(), key=operator.itemgetter(1), reverse=True)

    (7)与已知对应测试数据的类别标签比较,计算算法错误率:

    if sortedClassCount[0][1] != TestLabel[i]:        errCount += 1

    (8)若错误率在允许的范围内,则算法合理,可实际应用。


参考:
1、《Machine Learning in Action》 译名:《机器学习实战》 作者:Peter Harrington 译者:李锐 李鹏 曲亚东 王斌
出版社:人民邮电出版社

0 0