> 熟悉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绘图库,三步操作完成绘图,如下:
-
调用plot()、scatter()等方法,并为绘图填充数据。(数据是Numpy的ndarray类型的对象);
-
设定数据标签,使用xlabel()、ylabel()方法;
-
展示绘图结果,使用show() 方法。
- 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的容器。
Tips:
-
使用Numpy数组准备机器学习算法的数据
-
使用Matplotlib来创建图表,展示数据
-
通过Pandas导入,展示数据,以便增强对数据的理解和数据清洗、转换等工作。
scikit-learn
- 是python中开发和实践机器学习的著名类库之一,依赖SciPy及其相关类库来运行。scikit-learn的基本功能分为6大部分:分类、回归、聚类、数据降维、模型选择、数据预处理。
- scikit-learn本身不支持深度学习和GPU加速。
-
包含model, metrics等
参考:《机器学习python实践》. Broadview.