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)

        运行结果:

        

  • 相关阅读:
    LeetCode120 Triangle
    LeetCode119 Pascal's Triangle II
    LeetCode118 Pascal's Triangle
    LeetCode115 Distinct Subsequences
    LeetCode114 Flatten Binary Tree to Linked List
    LeetCode113 Path Sum II
    LeetCode112 Path Sum
    LeetCode111 Minimum Depth of Binary Tree
    Windows下搭建PHP开发环境-WEB服务器
    如何发布可用于azure的镜像文件
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9620461.html
Copyright © 2011-2022 走看看