KNN 算法的理解

KNN算法--投票猜黨派

KNN分類方法可以理解為投票法。把訓(xùn)練數(shù)據(jù)集當(dāng)做選民,K值當(dāng)做這些選民所擁有的選票?,F(xiàn)在從這些這些選民中推選出來(lái)的K位投票人,推選的標(biāo)準(zhǔn) 是和候選黨派(假設(shè)這個(gè)黨派名稱對(duì)選民是保密的,實(shí)際中可以理解為測(cè)試數(shù)據(jù))的政策主張(數(shù)據(jù)特征)相近程度。而這些投票人自己本身又有自己所屬的黨派,他們當(dāng)然把選票投給自己的黨派。得票最多的黨派獲勝,這時(shí)候我們就有較大的把握認(rèn)為得票多的黨派就是候選人的黨派名稱。


一個(gè)手勢(shì)識(shí)別的KNN應(yīng)用實(shí)例

    /**
     * @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];
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容