Matrix Standardisation with Python

Abstract

通过使用Python的Numpy数据处理库,进行矩阵标准化:减去平均值后除以每个维度的标准差。在此处理之后,每个维度具有零均值和单位标准差的特点。

由于数据样本的不同维度特征通常显示出不同的差异,因此对于某些后续的数据处理操作,对数据进行标准化处理是一个非常有益的预处理步骤。本案例的标准化公式:减去该维度的平均值后再除以该维度的标准差。在此处理之后,每个维度具有零均值和单位标准差的特点。

对于矩阵 X∈R s×n,s是行数,n是列数(即维度)。

# 导入所需的库
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
%load_ext autoreload
%autoreload 2

# 定义所需的矩阵维度
num_samples, num_features = 10, 5

# 设置随机数并生成矩阵,命名为data
np.random.seed(10)
data = np.random.rand(num_samples, num_features)

# 标准化运算
def standardize(x):
    centered_data = x - np.mean(x, axis=0) # 将整个矩阵中的每一个数减去该数所在维度的平均值(注意x是矩阵)
    std_data = centered_data / np.std(centered_data, axis=0) # 再将上一步的运算结果除以该维度的标准差
    return std_data
std_data = standardize(data)

# 测试结果
print(std_data, "\n\n", np.mean(std_data, axis=0), "\n\n", np.std(std_data, axis=0))

# 结果应该是 0 和 1 的矩阵,如下
 [ -1.88737914e-16   5.55111512e-17  -2.22044605e-17   1.11022302e-17
   2.44249065e-16] 

 [ 1.  1.  1.  1.  1.]