美文网首页
K近邻算法(python)

K近邻算法(python)

作者: desperado_wen | 来源:发表于2019-07-21 21:56 被阅读0次

    1,距离的度量


    这个图是从别的博客中截过来的,但是我忘了是哪一个博客了,怎么办......

    2,k近邻就是在列表中找到与自己距离最小的前k个,统计他们的属性值,出现最多的属性认为是自己的属性。
    第一步,计算距离,默认为欧式距离。

    import numpy as np
    def Calculate_distance(x:np.array,y:np.array,ty=2)->np.array:
        #计算距离 ty=2 欧式距离 ty=1 曼哈顿距离 ty>2闵科夫斯基距离
        if x.shape != y.shape:
            raise Exception('length is not equal !')
        return np.sum(np.abs(x-y)**ty,axis=1)**(1/ty)
    

    第二步,预测向量的属性值。

    from collections import Counter
    def classify(inp:np.array,dataSet:np.array,label:list,k:int,ty=2):
    #k 近邻分类器 inp 为输入需要预测的向量,dataset为训练数据框,
    #label 为训练数据框的结果 k为取最近的数的个数 ty为计算距离方式。
    #inp.shape=(n,),dataSet.shape=(m,n),len(label)=m
        if (inp.shape[0]!=dataSet.shape[1] or dataSet.shape[0] != len(label)):
            raise Exception('length is not equal !')
        source=np.tile(inp,(dataSet.shape[0],1))
        distances=Calculate_distance(source,dataSet,ty=ty)
        index=distances.argsort(kind='quicksort')#快速升序排序,返回索引列表。
        d=Counter([label[i] for i in index[:k]])
        return max(d,key=d.get)
    

    3,应用和结果展示。
    这里我就把转录组作业放上来了。
    下载基因芯片数据,然后分别用双样本t检验,SVM_RFE,pca对基因芯片打分后排序,再用svm和knn算法对结果进行留一法检验。
    https://github.com/wenyuhaokikika/ml/blob/master/07.ipynb

    相关文章

      网友评论

          本文标题:K近邻算法(python)

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