zoukankan      html  css  js  c++  java
  • 第2章 K近邻算法

    numpy中的tile函数:

    遇到numpy.tile(A,(b,c))函数,重复复制A,按照行方向b次,列方向c次。

    >>> import numpy
    >>> numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次
    array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
    >>> numpy.tile([0,0],(1,1))#在列方向上重复[0,0]1次,行1次
    array([[0, 0]])
    >>> numpy.tile([0,0],(2,1))#在列方向上重复[0,0]1次,行2次
    array([[0, 0],
           [0, 0]])
    >>> numpy.tile([0,0],(3,1))
    array([[0, 0],
           [0, 0],
           [0, 0]])
    >>> numpy.tile([0,0],(1,3))#在列方向上重复[0,0]3次,行1次
    array([[0, 0, 0, 0, 0, 0]])
    >>> numpy.tile([0,0],(2,3))<span style="font-family: Arial, Helvetica, sans-serif;">#在列方向上重复[0,0]3次,行2次</span>
    array([[0, 0, 0, 0, 0, 0],
           [0, 0, 0, 0, 0, 0]])

    python中的sum函数.sum(axis=1)

    当加入axis=1以后就是将一个矩阵的每一行向量相加

    a = np.array([[0, 2, 1]])
    
    print a.sum()
    print a.sum(axis=0)
    print a.sum(axis=1)
    
    结果分别是:3, [0 1 2], [3]
    
     
    
    b = np.array([0, 2, 1])
    
    print b.sum()
    print b.sum(axis=0)
    print b.sum(axis=1)
    
    结果分别是:3, 3, 运行错误:'axis' entry is out of bounds
    
     可知:对一维数组,只有第0轴,没有第1轴
    
    c = np.array([[0, 2, 1], [3, 5, 6], [0, 1, 1]])
    
    print c.sum()
    print c.sum(axis=0)
    print c.sum(axis=1)
    
    结果分别是:19, [3 8 8], [ 3 14  2]

    浅述python中argsort()函数的用法

    1.先定义一个array数据

    1 import numpy as np
    2 x=np.array([1,4,3,-1,6,9])

    2.现在我们可以看看argsort()函数的具体功能是什么:

    x.argsort()

    输出定义为y=array([3,0,2,1,4,5])。

    我们发现argsort()函数是将x中的元素从小到大排列提取其对应的index(索引),然后输出到y。例如:x[3]=-1最小,所以y[0]=3,x[5]=9最大,所以y[5]=5。

    Python 字典(Dictionary) get()方法


    描述

    Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。

    语法

    get()方法语法:

    dict.get(key, default=None)

    参数

    • key -- 字典中要查找的键。
    • default -- 如果指定键的值不存在时,返回该默认值值。

    返回值

    返回指定键的值,如果值不在字典中返回默认值None。

    items()和iteritems()区别:

    字典的items方法作用:是可以将字典中的所有项,以列表方式返回。因为字典是无序的,所以用items方法返回字典的所有项,也是没有顺序的。
    字典的iteritems方法作用:与items方法相比作用大致相同,只是它的返回值不是列表,而是一个迭代器。

    核心代码解读:

    # inX:用于分类的输入向量  
    # dataSet:输入的训练样本集
    # labels:标签向量
    # k:用于选择最近邻的数量
    def classify0(inX, dataSet, labels, k):
        # 距离计算
        dataSetSize = dataSet.shape[0] #数据的条目数  #c.shape[1] 为列的数量,c.shape[0] 为行的数量。
        diffMat = tile(inX, (dataSetSize,1)) - dataSet
        sqDiffMat = diffMat**2
        sqDistances = sqDiffMat.sum(axis=1) #将每一列相加
        distances = sqDistances**0.5
        
        # 将距离值按照从小到大排序
        sortedDistIndicies = distances.argsort()
        classCount={}
        
        # 取出前k个元素
        for i in rangs(k):
            # 取出对应的label
            voteIlabel = labels[sortedDistIndicies[i]]
            #计算当前取出的label的数量
            #对标签A、B分别进行统计计数
            classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
        
        # 逆序排列label对应总数的列表 返回对应的label
        sortedClassCount = sorted(classCount.iteritems(),key=operator.itemgetter(1), reverse=True)
        #iteritems()是把字典里面的元素,返回一个迭代器
        #key=operator.itemgetter(1),按照第1个值(即第二个统计到的个树值)进行排序
        #reverse=True,True时将按降序排列
        
        
        return sortedClassCount[0][0]


    python: min 和 max 函数:

    对于元组

    max(tuple)
    返回元组中元素最大值。

    min(tuple)
    返回元组中元素最小值。

    cmp(tuple1,tuple2)

    比较两个元组元素。

    tuple(seq)
    将列表转换为元组。

     

     
  • 相关阅读:
    JS时间自动更新
    浏览器一般兼容问题
    实现笛卡尔心形线的重复循环绘制
    js判断是否为ie6以外的浏览器,若是,则调用相应脚本
    html+css+js实现标签页切换
    实现跨浏览器的背景渐变
    IE8支持HTML5的占位符placeholder
    JS打造的跟随鼠标移动的酷炫拓扑图案
    JS获取阴历阳历和星期
    svn up时提示跳过某节点
  • 原文地址:https://www.cnblogs.com/captain-dl/p/9392882.html
Copyright © 2011-2022 走看看