zoukankan      html  css  js  c++  java
  • k-nn算法

    1,K-NN算法的理解:

    第一,对n维未知量xεRn , 测试其label

    第二,对已知训练数据y,计算x到y每个row的距离

    第三,选出k个最短的距离,根据这k个训练数据label的投票,确定x的label

    import numpy as np
    def knn_cla(train_data,train_label,test_data,k=1):
        '''k nearest negibor algorithm'''
        row_train = train_data.shape[0]#获取测试数据的维度
        pred_label = list()#将要输出的label list
        for i,test_data in enumerate(test_data):#对个test item
            dis=[]
            for train_item in train_data:
                dis.append(distance.euclidean(test_item,train_item))#计算此text item到每个train exaple的欧几里得距离
            nearest_ind = range(row_train)#产生0-rows的数据
            sorted(nearest_ind,key=lambda x:dis[x])#对dis列表进行排序,最终结果保存到nearest_ind
            nearest_label = [train_label[nearest_ind[x]] for x in range(k)]#将前k个最短距离的label加入到list当中
            pred_label.append(Counter(nearest_label).most_common()[0][0])#投票选取最普遍的label
        return np.array(pred_label)
    never never wait
  • 相关阅读:
    2013 HIT 春季校赛C题
    2013610 四省赛
    [BZOJ] 1441 Min
    移植中Makefile学习 关键字理解
    Emgu 学习之HelloWorld
    XML 基本概念和XPath选择
    AI 资源帖
    c语言 static
    Linux watch命令 实时监测命令的运行结果(转)
    ctags 注意点
  • 原文地址:https://www.cnblogs.com/lixiangfu/p/14815149.html
Copyright © 2011-2022 走看看