Skip to content

OhLaughing/SomePython

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

所有代码都是python3

python

机器学习连接:https://www.cnblogs.com/aabbcc/p/8683042.html

链接

x = 1
y = 2
x, y = swap(x, y)     # => x = 2, y = 1
# (x, y) = swap(x,y)  # Again parenthesis have been excluded but can be included.
# python中with的作用 : https://zhuanlan.zhihu.com/p/158100802

# Function Scope
x = 5

def set_x(num):
    # Local var x not the same as global variable x
    x = num    # => 43
    print(x)   # => 43

def set_global_x(num):
    global x
    print(x)   # => 5
    x = num    # global var x is now set to 6
    print(x)   # => 6

set_x(43)
set_global_x(6)
  • python命令,who和whos可以查看所有变量,以及变量的信息,利用del命令可以删除变量的定义
  • 会利用 for a in b
  • python3中/表示浮点数除法,//表示整数除法
L = list(range(10))
L2 = [str(c) for c in L]

sorted和operator.itemgetter实现排序,也可以通过加reverse=True来实现逆序排序

import operator
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=operator.itemgetter(2))  # 根据第3个值进行排序
# [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
sorted(students, key=operator.itemgetter(1,2)) # 根据第二个和第三个值进行排序
# [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

paper书籍

  • A practical guide to SVM classification 《DEEP LEARNING》《机器学习-周志华》《统计学习方法-李航》《机器学习实战》《利用Python进行数据分析》

学习记录

  • 20200817: 前段时间一直在看吴恩达的机器学习课程,共8课,看到第4课神经网络,还没能自己通过反向传播来实现把例子的,手写数字识别,代码中不知道哪里还有些问题,昨天看了《机器学习实战》的knn算法,还没看完
  • 20200822: 看完《机器学习实战》的knn算法,在看《统计学习方法》的KNN,这里用KD树算法,用KD的主要目的是,找到最近的距离时,用二分查找方法,否则要遍历所有的样本才能知道最近的样本距离,效率很低,总结就是KD树查找效率为O(lg(n)),不用KD树(机器学习实战里的方法)效率为O(n)

ipython

  • ???都是查询方法或模块的信息,例如:np.arange?\np.arange??, ??比?更详细,也可以help(np.arange)查看信息
  • tab键,可以自动补全,例如,输入np.ar+tab,就会出现np.ar开头的所有的方法
  • str.find? 可以查找方法
  • 查看历史命令,可以用上下键,也可以用ctrl+p/ctrl+n, 但是用ctrl的好处是,可以指定开头,比如我之前输入了很多命令,但是我只想查看np.开头的命,就可以输入np.之后,通过ctrl+p/ctrl+n来查找
  • 可以在ipython中,使用ls、pwd、cd等命令
  • 在python3中,reload,可以先import importlib 然后 importlib.reload(kNN1)

numpy

  • np.ones((3,5))、np.full((3,5), 3.14)、
  • np.linspace(0,1,10) 生成等差数列,start:0,stop:1,共10个数(包括start和stop),num默认50 endpoint 设为 true或False来控制是否包含stop
  • np.array([1,2,3])
  • n.arange(0,10,2) 生成等差数列,包括start,不包括stop
  • 数组的属性:ndim、shape、size、dtype
  • x[-1]取数组末尾数据
  • 多维数组,x[1,2]取1行2列元素
  • 与python不同,numpy 是固定类型的
  • x[start:stop:step]取元素,默认start=0,stop为数组维度,step=1
  • x[::2] 从0每隔一个取一个元素,x[1::2] 从1每隔一个取一个元素,x[::-1]逆序取元素
  • x2是二维的,x2[:3,::2]取前3行,列从0开始每隔一个取一个元素
  • x2[0]等同于x2[0,:]
  • grid = np.arange(1,10).reshape(3,3)
  • np.flatten() 把多维数组变成一维
  • np.dot(a,b) 如果a和b是向量,结果是内积,如果a和b是矩阵,结果是矩阵积,也可以写成a.dot(b)
  • np.tile() 函数,扩展数组
  • numpy的广播功能
a = np.arange(3)
b = np.arange(3).reshape(3,1)
In [12]: a*b
Out[12]:
array([[0, 0, 0],
       [0, 1, 2],
       [0, 2, 4]])
  • a = (x for x in range(5))得到generator对象,然后通过a.next()获取元素,会提示: 'generator' object has no attribute 'next',应该用a.next()
  • 笛卡尔坐标、极坐标
  • np.c_ 是将两个矩阵左右组合到一个矩阵(c为column),用法np.c_[a,b],不是括号
  • np.r_ 是将两个矩阵上下组合到一个矩阵(r为row)
  • ravel 将多维数组转成一维数组
  • numpy.ndarray可以用.transpose()方法来转置
  • 在ipython中如果想知道某个方法的详细信息说明,可以用help命令,例如:help(np.ravel)即可
  • 二维numpy矩阵,a[0]和a[0,:]都是第一行
  • np.info()方法是获取其他方法的详细信息

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published