将矩阵拉平成向量
1 2 3 4 5 6 7 8
| >> digits = datasets.load_digits() >> digits.images.shape (1797, 8, 8) >>>data = digits.images.reshape((digits.images.shape[0],-1)) >> digits.images.shape (1797, 64)
|
乱序化数据
1 2 3 4 5 6 7 8 9
| import time np.random.seed(int(time.time())) # np.random.seed(0) indices = np.random.permutation(len(iris_X)) iris_X_train = iris_X[indices[:-10]] iris_y_train = iris_y[indices[:-10]] iris_X_test = iris_X[indices[-10:]] iris_y_test = iris_y[indices[-10:]]
|
数据去重 np.unique
1 2 3 4 5 6 7
| >> import numpy as np >> from sklearn import datasets >> iris = datasets.load_iris() >> iris_X = iris.data >> iris_y = iris.target >> np.unique(iris_y) array([0, 1, 2])
|
标准化(Z-Score),去除均值和方差缩放
公式为:(X-mean)/std 计算时对每个属性/每列分别进行。
将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
实现时,有两种不同的方式:
求矩阵最大值的坐标
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| In : import numpy as np In : x = np.array() In : x Out: array( ) In : re = np.where(x == np.max(x)) In : print re (array(), array()) In : x=9 In : re = np.where(x == np.max(x)) In : print re (array(), array())
|
每行每列最大值坐标
1 2 3 4 5 6 7 8 9 10 11 12
| In : x Out: array( ) # 每行最大值 In : np.amax(x, axis=1) Out: array() # 每列最大值 In : np.amax(x, axis=0) Out: array()
|
每行每列最大值位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| In [18]: re = np.where(x[1,:] == np.max(x[1,:])) In [19]: print re (array([0]),) In [20]: re = np.where(x[0,:] == np.max(x[0,:])) In [21]: print re (array([0]),) In [22]: re = np.where(x[2,:] == np.max(x[2,:])) In [23]: print re (array([1]),)
|
快速求一行或一列最大值
1 2 3 4 5 6 7 8 9 10
| >>> a = np.arange(4).reshape((2,2)) >>> a array([[0, 1], [2, 3]]) >>> np.amax(a) 3 >>> np.amax(a, axis=0) array([2, 3]) >>> np.amax(a, axis=1) array([1, 3])
|
补充
参考资料
[1] 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化