十分钟上手:python的基础知识点

106 阅读4分钟

> 熟悉Python语法、相关库:SciPy,Numpy, Pandas, Matplotlib, scikit-learn

SciPy是在数学运算、科学和工程学方面被广泛应用的Python类库,包含统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等,被广泛应用在机器学习项目。SciPy依赖Numpy, Pandas, Matplotlib等机器学习相关的类库。


Python


空格

  • 在python中,空格是用来区分代码块。

空值

  • 在python中,每一种数据类型都是对象。

  • 空值是Python中的一个特殊值,用None表示,表示该值是一个空对象。

  • 你可以将None赋值给任何变量,也可以将任何变量赋值给一个None值的对象。

复杂数据类型(元组、列表、字典)

  • 元组是一个只读的集合类型,初始化后,元组的元素不能重新赋值,如a=(1,2,3), a[1] = 100。

  • 列表的元素可以重新赋值,b=[1,2,3]

  • 字典是另一种可变容器模型,且可存储任意类型的对象,c={'x':1, 'y':'str', 'z':True}。

字典:删除特定的key元素,用pop(key)方法; 删除全部元素,使用字典自身的clear() 方法。

with语句 Vs. try/finally 范式


with open('filename') as somefile: 

    for line in somefile:

        print(line)

with 语句简化了对异常的处理。传统的try/finally范式如下:


somefile = open('filename')

try:

    for line in somefile:

        print(line)

finally:

    somefile.close()


Numpy


是python 的一种开源数值计算扩展,用来存储和处理大型矩阵,提供许多高级的数值编程工具,如矩阵数据类型、矢量处理、精密运算库。

Numpy为Scipy提供了基础的数据结构和运算,其中最主要的是ndarrays多维数组,它提供了高效的矢量运算功能。

  • 创建:通过给array函数传递Python函数的序列对象创建数组;如果是多层嵌套的序列,将创建多维数组。如,myarray = np.array([1,2,3])

  • 访问:形状myarray.shape, 第一行myarray[0],第一列myarray[:, 0]

  • 运算:加法+、乘法*等,形状相同,对位操作。


Matplotlib


python中著名的2D绘图库,三步操作完成绘图,如下:

  1. 调用plot()、scatter()等方法,并为绘图填充数据。(数据是Numpy的ndarray类型的对象);

  2. 设定数据标签,使用xlabel()、ylabel()方法;

  3. 展示绘图结果,使用show() 方法。

Example gallery

  • Matplotlib API

Pandas


Pandas是基于Numpy的功能强大的对数据进行切片的工具,旨在解决数据分析任务。

Pandas提供了用于机器学习的复杂数据类型:矢量运算方法和数据分析方法。Pandas也提供了多种数据结构。

Series: 一维数组,与Numpy中的一维Array类似。二者与Python的List也很相似,其区别是List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,以提高内存和运算效率。

Series虽然与Numpy的一维数组类似,但在建立Series时可以设定index,也可以像访问Numpy数组或字典一样访问Series元素。如


myarray = np.array([1,2,3])

index = ['a', 'b', 'c']

myseries = pd.Series(myarray, index=index)

print(myseries)

print(myseries[0]) # 类似Numpy数组直接访问

print(myseries['c']) # 类似字典通过索引访问

Time-Series:以时间为索引的Series

DataFrame:二维的表格型数据结构,可以看作是Series的容器。很多功能与R语言中data.frame类似。

 DataFrame是可以指定行和列标签的二维数组,数据可以通过指定列名来访问特定列的数据。


myarray = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])

rowindex = ['row1', 'row2', 'row3']

colname = ['col1', 'col2', 'col3']

mydataframe = pd.DataFrame(data=myarray, index=rowindex, columns=colname)

print(mydataframe['col3']) # 访问col3列的数据

Panel:三维数组,可以看作是DataFrame的容器。

pandas-doc


Tips:

  1. 使用Numpy数组准备机器学习算法的数据

  2. 使用Matplotlib来创建图表,展示数据

  3. 通过Pandas导入,展示数据,以便增强对数据的理解和数据清洗、转换等工作。


scikit-learn


  • 是python中开发和实践机器学习的著名类库之一,依赖SciPy及其相关类库来运行。scikit-learn的基本功能分为6大部分:分类、回归、聚类、数据降维、模型选择、数据预处理。

- scikit-learn本身不支持深度学习和GPU加速。

  • 包含model, metrics等

参考:《机器学习python实践》. Broadview.