1、标准化 Standardization
标准化又被称为均值移除(mean removal),对不同样本的同一特征 值进行处理,最终均值为0,标准差为1,采用此种方式我们只需要使 用如下公式即可。
x_scaled = (x-mean)/std
import numpy as np
from sklearn import preprocessing
data_standardized = preprocessing.scale(data)
2、数据缩放化(Scaling)
对不同样本的同一特征值,减去其最小值,除以(最大值-最小值), 最终原最大值为1,原最小值为0,这样在数据分析时可以有效的消除 不同单位大小对最终结构的权重影响。(例如股票类信息,如果股价 是5-7元之间浮动,但是每天成交量在100万上下,在不在采用缩放 的模式下,成交量的数据权重会比股价高上几万倍,导致最终预测数 据出现畸形
x_scaled = (x-x_min)/(x_max-x_min)
data_scaler = preprocessing.MinMaxScaler(feature_range=(0, 1))
data_scaled = data_scaler.fit_transform(data)
3、数据归一化(Normalization)
当您要调整特征向量中的值时,可以使用数据归一化,以便可以使用 通用比例尺对其进行测量。机器学习中最常用的规范化形式之一是调 整特征向量的值,使其总和为1。常见的处理方式有如下几种:L1模 式 L2模式。
归一化的L1范数模式
L1范数是我们经常见到的一种范数,它的定义如下:||x|| = sum(|xi|) L1: z = sum(|xi|)
L1范数有很多的名字,例如我们熟悉的曼哈顿距离、最小绝对误差等 。使用L1范数可以度量两个向量间的差异,如绝对误差和(Sum of Absolute Difference)
data_normalized = preprocessing.normalize(data, norm='l1',axis=0)
归一化的L2范数模式
L2范数是我们最常见最常用的范数了,我们用的最多的度量距离欧氏 距离就是一种L2范数,它的定义如下:
||x|| = math.sqrt(sum(xi**2)) L2:z = math.sqrt(sum(xi**2))
L2范数通常会被用来做优化目标函数的正则化项,防止模型为了迎合 训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力
data_normalized = preprocessing.normalize(data, norm='l2',axis=0)
4、数据二值化(Binarization)
当我们要将数字特征向量转换为布尔向量时,可以使用二值化。在数 字图像处理领域,图像二值化是将彩色或灰度图像转换为二进制图像 (即仅具有两种颜色(通常是黑白)的图像)的过程。
此技术用于识别对象,形状,尤其是字符。通过二值化,可以将感兴 趣的对象与发现对象的背景区分开
data_binarized = preprocessing.Binarizer(threshold=1.4).transform(data)
5、独热编码器(One-hot)
对于经常需要处理各种分散数值的情况。实战当中我们并不需要存储 这些值。相对于传统的将每个独立的对象进行一对一的编码。独热编 码器可以将“一键编码”视为一种可以强化特征向量的工具。它查看 每个功能并标识不同值的总数。它使用N分之一的方案来编码值。基 于该方案对特征向量中的每个特征进行编码。这有助于我们提高空间 效率。
encoder = preprocessing.OneHotEncoder()
encoder.fit(data)
encoded_vector = encoder.transform([[1, 0, 3]]).toarray()
标签化 LabelEncoder
label_encoder = preprocessing.LabelEncoder()
input_classes = ['audi', 'ford', 'audi', 'toyota', 'ford', 'bmw']
label_encoder.fit(input_classes)
labels = ['toyota', 'ford', 'audi']
encoded_labels = label_encoder.transform(labels)