zoukankan      html  css  js  c++  java
  • kNN算法学习(一)

    1、首先需要一些训练样本集,例如一道问题(数据)及答案(标签),可以看做一条样本,那么多条,就是样本集

    当然这里应该是一条数据及该数据所属的分类,该类别称为标签

    2、现在我们已经知道数据与所属类别的对应关系

    3、那么当我们想要输入一条数据时,就可以通过KNN算法,根据已知的对应关系,判断该数据的类别。

    具体步骤如下:

    1、收集训练样本集(数据<->类别)

    2、输入所要判断的数据

    3、计算该数据与训练样本的距离

    4、将这些距离升序排列,取前K条训练样本,这就是kNN,k的出处

    5、统计这k条训练样本数据所属类别及其对应的个数,然后降序排列

    6、第一个类别便是输入数据的计算结果

    python3例子如下:

    from numpy import *
    import operator
    
    def createDataSet():
        group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
        labels = ['A','A','B','B']
        return group,labels
    
    def classify0(inX, dataSet, labels,k):
        # 欧式距离计算
        dataSetSize = dataSet.shape[0]
        diffMat = tile(inX, (dataSetSize,1)) - dataSet
        sqDiffMat = diffMat ** 2
        sqDistances = sqDiffMat.sum(axis=1)
        distances = sqDistances**0.5
        sortedDisIndicies = distances.argsort()
        # 选择距离最小的k个点
        classCount={}
        for i in range(k):
            voteIlabel = labels[sortedDisIndicies[i]]
            classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
        # 排序
        sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
        return sortedClassCount[0][0]
    
    
    group, labels = createDataSet()
    print(classify0([0,0],group,labels,3))
  • 相关阅读:
    ELF和a.out文件格式的比较
    vim常用命令
    安装linux各种桌面环境
    使用virt-manager创建和管理虚拟机
    第一天 纪念一下
    i节点,容易被人遗忘的节点
    【Linux】服务器之间的免密登录脚本
    【python】python调用shell方法
    【ansible】ansible部署方式以及部署包
    【AWS】亚马逊云常用服务解释
  • 原文地址:https://www.cnblogs.com/zrdm/p/8784587.html
Copyright © 2011-2022 走看看