美文网首页
KNN 算法的理解

KNN 算法的理解

作者: AlexSun1995 | 来源:发表于2017-04-23 17:24 被阅读0次

KNN算法--投票猜党派

KNN分类方法可以理解为投票法。把训练数据集当做选民,K值当做这些选民所拥有的选票。现在从这些这些选民中推选出来的K位投票人,推选的标准 是和候选党派(假设这个党派名称对选民是保密的,实际中可以理解为测试数据)的政策主张(数据特征)相近程度。而这些投票人自己本身又有自己所属的党派,他们当然把选票投给自己的党派。得票最多的党派获胜,这时候我们就有较大的把握认为得票多的党派就是候选人的党派名称。


一个手势识别的KNN应用实例

    /**
     * @param trainingData2
     * @param vec2
     * @return the distance of two vectors
     */
     public double EulerDistance(Double[] trainingData2,double[] vec2){
        double tdis = 0.0;
        double ans = 0.0;
        double dis = 0.0;
        for(int i = 0;i<vecLen;i++){
            dis = (trainingData2[i] - vec2[i]);
            tdis += dis * dis;
        }
        ans = Math.sqrt(tdis);
        return ans;
    }
     
     
    /**
     * the Entrance method of this class,from one to six marks the name
     * of all the gestures,and this method returns the name of gesture 
     * that most matching.
     * Using KNN algorithm
     * @return name of gesture
     */
    class Node implements Comparable<Node>{
        public double dis;
        public int gid;
        public Node(int _gid,double _dis) {
            this.gid = _gid;
            this.dis = _dis;
        }
        @Override
        public int compareTo(Node o) {
            if(this.dis > o.dis) return 1;
            else if(this.dis < o.dis) return -1;
            else return 0;
        }
    }
    public int GestureResult(double[] inData,int k){
        ArrayList<Node> nodes = new ArrayList<>();
        int[] vote = {0,0,0,0,0,0};
        for(int i = 0;i<6;i++){
            for(int j = 0;j<60;j++){
                nodes.add(new Node(i,EulerDistance(trainingData[i][j], inData)));
            }
        }
        Collections.sort(nodes);
        for(int i = 0;i<k;i++){
            vote[nodes.get(i).gid]++;
        }
        int ans_index = 0;
        int most = -1;
        for(int i = 0;i<6;i++){
            if(vote[i] > most){
                ans_index = i;
                most = vote[i];
            }
        }
       return GestrueName[ans_index];
    }

相关文章

  • 2017.11.05学习笔记1-k近邻算法原理

    目标 1、理解KNN算法的核心思想2、理解KNN算法的实现3、掌握KNN算法的应用步骤:数据处理、建模、运算和结果...

  • KNN与K-Means算法的区别

    内容参考:Kmeans算法与KNN算法的区别kNN与kMeans聚类算法的区别 KNN-近邻算法-分类算法 思想:...

  • KNN 算法的理解

    KNN算法--投票猜党派 KNN分类方法可以理解为投票法。把训练数据集当做选民,K值当做这些选民所拥有的选票。现在...

  • knn算法

    knn算法 knn算法简介 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法。所谓K...

  • kNN算法

    kNN算法大概是机器学习相关算法中最容易理解的算法了。这篇文章的目的大概是介绍一下kNN算法,介绍一下其错误率的推...

  • KNN近邻算法总结

    目录 一、KNN近邻算法思想 二、KNN模型三大要素 三、KNN算法实现步骤 四、KNN算法的KD树实现 五、总结...

  • kNN算法

    一、kNN算法概述 kNN是k-Nearest Neighbour的缩写,这是一种非常简单且易于理解的分类算...

  • 机器学习--有监督--KNN(K近邻)

    KNN是一种很简单的KNN有监督的机器学习算法;既可用于分类,也可用于回归任务。 1、KNN的简单理解 1.1 算...

  • 01 KNN算法 - 概述

    KNN算法全称是K近邻算法 (K-nearst neighbors,KNN) KNN是一种基本的机器学习算法,所谓...

  • 机器学习笔记汇总

    kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法

网友评论

      本文标题:KNN 算法的理解

      本文链接:https://www.haomeiwen.com/subject/dheyzttx.html