zoukankan      html  css  js  c++  java
  • KNN算法之图像处理一

    KNN:

      1.数据挖掘分类技术中最简单的方法之一。

      2.也称为邻近算法,K最近邻分类算法

      3.每个样本都可以用它最接近的k个邻居来代表

      4.一般,距离使用欧式距离或曼哈顿距离(通常,k≤20)

    python代码实现

      例子:

        已有的分类数据:

          A:(1.0,2.0)

          A:(1.2,0.1)

          B:(0.1,1.4)

          B:(0.3,3.5)

        测试数据:(1.1,0.3)

        推测结论(正确):A

      代码:

    from array import array
    
    from numpy import *
    import operator
    
    ## 给出训练数据以及对应的类别
    def createDataset():
        group = array([[1.0,2.0],[1.2,0.1],[0.1,1.4],[0.3,3.5]])
        labels = ['A','A','B','B']
        return group,labels
    
    ###通过KNN进行分类
    def classify(input,dataSet,label,k):
        dataSize = dataSet.shape[0]
        ####计算欧式距离
        diff = tile(input,(dataSize,1))-dataSet
        sqdiff = diff ** 2
        squareDist = sum(sqdiff,axis=1)###行向量分别相加,从而得到新的一个行向量
        dist = squareDist ** 0.5
    
        ##对距离进行排序
        sortedDisIndex = argsort(dist)##argsort()根据元素的值从大到小对元素进行排序,返回下标
    
        classCount={}
        for i in range(k):
            voteLabel =label[sortedDisIndex[i]]
            ###对选取的k个样本所属的类别个数进行统计
            classCount[voteLabel] = classCount.get(voteLabel,0) + 1
        ###选取出现的类别次数最多的类别
        maxCount = 0
        for key,value in classCount.items():
            if value > maxCount:
                maxCount =value
                classes =key
    
        return classes
    
    
    
    ##函数入口
    if __name__ == '__main__':
        dataSet,labels = createDataset()
        input = array([1.1,0.3])
        K=3
        output = classify(input,dataSet,labels,K)
        print("测试数据为:",input,"分类结果为:",output)

        运行结果:

        

  • 相关阅读:
    Android Binder机制中的异步回调
    VS加载项目时报错 尚未配置为Web项目XXXX指定的本地IIS
    下班前码个2013总结吧
    android ListView 在初始化时多次调用getView()原因分析
    Android BindService中遇到的一个小问题
    C#读书笔记之并行任务
    Android系统启动分析(Init->Zygote->SystemServer->Home activity)
    浅析Java异常
    在Ubuntu-14.04.3配置并成功编译Android6_r1源码
    (转)Android Binder设计与实现 – 设计篇
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9620461.html
Copyright © 2011-2022 走看看