[机器学习实战]kNN

来源:互联网 发布:淘宝卖家真实现状 编辑:程序博客网 时间:2024/05/22 10:43

    • 原理
    • 源码
    • 加权kNN
      • 高斯函数
      • 交叉验证

原理

kNN(k近邻算法)的基本思想就是选择距离待分类点最近的K个点,统计这K个点中出现的分类的概率, 出现概率最高的分类即为待分类点的分类

源码

from numpy import *import operatordef createDataSet():    # create data set    group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])    labels = ['A', 'A', 'B', 'B']    return group,labelsdef classify0(inX, dataSet, labels, k): #k-NN classify    """    :param inX: 用于分类的输入向量    :param dataSet: 输入的训练样本集    :param labels: 标签向量    :param k: 用于选择最近邻居的数目    :return:    """    # 用欧氏距离计算当前点与样本集中所有点的距离    dataSetSize = dataSet.shape[0]  #获取数组维度的长度 (列或行数)    diffMat = tile(inX, (dataSetSize, 1)) - dataSet # tile是重复次数,如tile([0,0],(2,3)),是在重复行2次,列3次,结果是[[0 0 0 0 0 0] [0 0 0 0 0 0]]    sqDiffMat = diffMat ** 2    # 所有元素平方    sqDistances = sqDiffMat.sum(axis = 1) # axis = none 表示所有元素相加, axis = 0表示每一列所有元素相加, axis = 1表示每一行所有元素相加    distances = sqDistances**0.5    # 开方得到待求点到数据集中所有点的距离    sortedDistIndicies = distances.argsort()    # 返回的是从小到大排序后的原数据的索引, 如原数据为[1, 5, 3, 0], 调用argsort()方法返回的是[3, 0, 2, 1]    classCount = {}    # 选择距离最小的k个点    for i in range(k):        voteIlabel = labels[sortedDistIndicies[i]] # 得到前k个标签        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 # 统计label出现的次数,默认值为0    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)  # 根据标签出现次数从高到低排序    return sortedClassCount[0][0]if __name__ == "__main__":    group, labels = createDataSet()    result = classify0([0, 0], group, labels, 3)    print(result)

加权kNN

有一个问题就是该算法给所有的近邻分配相等的权重,这个还可以这样改进,就是给更近的邻居分配更大的权重(你离我更近,那我就认为你跟我更相似,就给你分配更大的权重),而较远的邻居的权重相应地减少,取其加权平均。需要一个能把距离转换为权重的函数,gaussian函数是一个比较普遍的选择,下图可以看到gaussian函数的衰减趋势。

高斯函数

这里写图片描述

高斯函数的图形在形状上像一个倒悬着的钟。参数a指高斯曲线的峰值,b为其对应的横坐标,c即标准差(有时也叫高斯RMS宽值),它控制着“钟”的宽度。

这里写图片描述

交叉验证

使用交叉验证进行算法模型评估以及k值的选取

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 清华大学环境总裁班 清华大学工商总裁班 清华大学建筑总裁班 清华大学房地产总裁研修班 山东大学管理学院总裁班 清华大学董事长研修班 清华大学投融资总裁班 清华大学房地产总裁班 清华大学实战型房地产总裁班 绝色总裁 精英总裁受 我的总裁老婆 我的双面总裁 我的总裁老妈 我的绝色总裁 帝国总裁的极宠妻 总裁的替嫁新娘 总裁的小妻子 我的老婆是总裁 我的总裁未婚妻 总裁的头号鲜妻 总裁的秘密 办公室的女总裁 总裁培训网 冰山总裁的贴神医苏寒笔趣网 冷血总裁深深爰258中文网 总裁的高冷网红妻 星代表 总裁学习网 中国总裁培训网 总裁网 清华大学总裁培训网 十二字总要求 总要求 12字总要求 总要求是什么 主体教育总要求 乡村振兴的总要求是什么 主题教育12字总要求 乡村振兴战略总要求 开展主题教育总要求 主题教育十二字总要求