KNN python code

來源:互聯網
上載者:User

幾分鐘寫了個KNN Python代碼,在編譯器上可以直接跑:


"""programs: KNN algorithmdescription:1.calculate the distance between test data and every single train data2.sort the distance 3.select the minimum k points by distance4.count the label frequency of k points5.return to the label of the highest frequency"""from mlxtend.data import iris_dataimport numpy as npclass knn_csy(object):    def __init__(self,dataset,label):        self.dataset=dataset        self.label=label    def distance(self,dataset_i,testdata):        dist=np.sum((dataset_i-testdata)**2)        return np.sqrt(dist)    def calculate_dis(self,testdata,k=10,updateflage=0):        """                :param testdata:         :param k: default by 10        :param updateflage:         :return:         """        if len(testdata)!=len(self.dataset[0]):            raise Exception("wrong input array of testdata");        dis=[]        dimension=len(self.dataset)        for i in range(dimension):            distance=self.distance(self.dataset[i],testdata)            dis.append(distance)        dic=zip(dis,self.label)        dic=sorted(dic)        label=[]        for i in range(k):            label.append(dic[i][1])        count=np.bincount(label)        label=np.argmax(count)        if updateflage:            self.dataset.append(testdata)            self.label.append(label)        return labelif __name__ == '__main__':    dataset,label=iris_data()    myknn=knn_csy(dataset,label)    testdata=[2,1,1,2]    label=myknn.calculate_dis(testdata,3)    print label


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.