机器学习2

python机器学习基础库(numpy,pandas,matplotlib)

1.numpy

NumPy是Python数值计算最重要的基础包,支持高级大量的维度数组与矩阵运算,大多数提供科学计算的包都是使用Numpy的数组作为构建基础。Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机器学习框架的基础库。

下面简要介绍numpy的简单使用方法

创建ndarray对象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

1.
object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
2.
dtype 数组的所需数据类型,可选。
3.
copy 可选,默认为true,对象是否被复制。
4.
order C(按行)、F(按列)或A(任意,默认)。
5.
subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
6.
ndmin 指定返回数组的最小维数。

代码:

1
2
3
4
5
6
7
import numpy as np 

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

print a

输出为:[1, 2, 3]

创建一个二维数组

1
2
3
4
5
6
7
import numpy as np 

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

print a

output:[[1, 2] ,[3, 4]]
使用reshape调整数组大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np 

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

b = a.reshape(3,2)

print b

output:
[[1, 2]

[3, 4]

[5, 6]]

切片和索引

ndarray对象的内容可以通过索引或切片来访问和修改,就像 Python 的内置容器对象一样。

如前所述,ndarray对象中的元素遵循基于零的索引。 有三种可用的索引方法类型: 字段访问,基本切片高级索引

基本切片是 Python 中基本切片概念到 n 维的扩展。 通过将startstopstep参数提供给内置的slice函数来构造一个 Python slice对象。 此slice对象被传递给数组来提取数组的一部分。

示例 1
1
2
3
4
import numpy as np
a = np.arange(10)
s = slice(2,7,2)
print a[s]

输出如下:

1
[2  4  6]

在上面的例子中,ndarray对象由arange()函数创建。 然后,分别用起始,终止和步长值272定义切片对象。 当这个切片对象传递给ndarray时,会对它的一部分进行切片,从索引27,步长为2

通过将由冒号分隔的切片参数(start:stop:step)直接提供给ndarray对象,也可以获得相同的结果。

示例 2
1
2
3
4
import numpy as np
a = np.arange(10)
b = a[2:7:2]
print b

输出如下:

1
[2  4  6]

如果只输入一个参数,则将返回与索引对应的单个项目。 如果使用a:,则从该索引向后的所有项目将被提取。 如果使用两个参数(以:分隔),则对两个索引(不包括停止索引)之间的元素以默认步骤进行切片。

示例 3
1
2
3
4
5
# 对单个元素进行切片  
import numpy as np
a = np.arange(10)
b = a[5]
print b

输出如下:

1
5
示例 4
1
2
3
4
# 对始于索引的元素进行切片  
import numpy as np
a = np.arange(10)
print a[2:]

数学运算

可以对Numpy数组进行加法,减法,乘法,甚至三角运算,可以通过广度映射对不同阵型的数组进行算术运算。

向量

使用np.vectorize(函数)创建标量函数的向量化版本,以Python函数或方法作为参数,输出函数的向量化版本。

1
2
3
4
5
6
7
8
9
10
import numpy as np

def myfunc(a,b):
def myfunc(a,b):
if a>b:
return a-b
else:
return a+b
vfunc=np.vectorize(myfunc)
print(vfunc([1,2,3,4],[4,3,2,1]))

输出为:

1
[5 5 1 3]

多项式函数

ployld接受降幂次序的参数数组作为参数

创建多项式
1
2
3
4
5
6
7
8
import  numpy as np
p=np.poly1d([2,3,4])
print(np.poly1d(p))


output:
2
2 x + 3 x + 4