zoukankan      html  css  js  c++  java
  • Machine Learning in Action-chapter2-k近邻算法

    一.numpy()函数

       1.shape[]读取矩阵的长度

       例:

    import numpy as np
    x = np.array([[1,2],[2,3],[3,4]])
    print x.shape         //输出行列数 (3,2)
    print x.shape[0]    //输出行数 3
    print x.shape[1]    //输出列数 2
    

    2.tile()函数

    形式为tile(A,reps)

    reps的数字从后往前分别对应A的第N个维度的重复次数。如tile(A,2)表示A的第一个维度重复2遍,tile(A,(2,3))表示A的第一个维度重复3遍,然后第二个维度重复2遍,tile(A,(2,2,3))表示A的第一个维度重复3遍,第二个维度重复2遍,第三个维度重复2遍。

    例:

    A=[1,2]
    print '-----------tile(A,2)--------------'
    print tile(A,2)
    print '-----------tile(A,(2,2))----------'
    print tile(A,(2,2))
    print '-----------tile(2,2,3)------------'
    print tile(A,(2,2,3))
    

      输出结果为:

           

    3.sum()函数

    没有axis参数表示全部相加,axis=0表示按列相加,axis=1表示按照行的方向相加

    例:

    import numpy as np
    x = np.array([[1,2,3],[4,5,6]])
    k = x.sum()
    k0 = x.sum(axis=0)
    k1 = x.sum(axis=1)
    print k
    print k0
    print k1
    

      输出结果为:

       

    4.argsort()函数

    返回的是数组值从小到大的索引值

    例:>>> x = np.array([3, 1, 2])
         >>> np.argsort(x)
         array([1, 2, 0])

    -------------------------------k近邻算法源代码---------------------------------

    def classify0(inX, dataSet, labels, k):
        dataSetSize = dataSet.shape[0]
        diffMat = tile(inX, (dataSetSize, 1)) - dataSet
        sqDiffMat = diffMat ** 2
        sqDistances = sqDiffMat.sum(axis=1)
        distances = sqDistances ** 0.5
        sortedDistIndicies = distances.argsort()
        classCount = {}
        for i in range(k):
            voteIlabel = labels[sortedDistIndicies[i]]
            classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
        sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
    #sortedClassCount = sorted(classCount.iteritems(), key=lambda classCount:classCount[1], reverse=True) return sortedClassCount[0][0]

      

    inX:输入向量

    dataSet:训练样本

    labels:标签向量

  • 相关阅读:
    C语言版本:单链表的实现(优化版本)
    C语言版本:单链表的实现
    C语言版本:顺序表的实现
    C++:多态浅析
    C++:同名隐藏和赋值兼容规则
    C++:钻石继承与虚继承
    C++:派生类的构造函数和析构函数的调用顺序
    Docker安装和使用
    Node10.15.0的安装
    碎碎叨叨
  • 原文地址:https://www.cnblogs.com/shanlizi/p/6848973.html
Copyright © 2011-2022 走看看