数据预处理技术
均值移除( Mean removal)
将数据的每个特征的平均值移除,以保证特征均值为0(即标准化处理)。这样可以消除特征彼此间的偏差(bias)。
示例代码:
import numpy as np
from sklearn import preprocessing
data = np.array([[3, -1.5, 2, -5.4], [0, 4, -0.3, 2.1], [1, 3.3, -1.9, -4.3]])
data_standardized = preprocessing.scale(data)
print("\nMean =", data_standardized.mean(axis = 0))
print("Std deviation =", data_standardized.std(axis = 0))
运行效果:
特征均值几乎是0,而且标准差为1
Mean = [ 5.55111512e-17 -1.11022302e-16 -7.40148683e-17 -7.40148683e-17]
Std deviation = [1. 1. 1. 1.]
范围缩放( Scaling)
数据点中,每个特征的数值范围可能变化很大,因此,将特征的数值范围缩放到合理的大小是非常重要的。
示例代码:
data_scaler = preprocessing.MinMaxScaler(feature_range = (0, 1))
data_scaled = data_scaler.fit_transform(data)
print("\nMin max scaled data = ", data_scaled)
运行效果:
所有数据点的特征值都位于指定的数值范围内。
Min max scaled data =
[[1. 0. 1. 0. ]
[0. 1. 0.41025641 1. ]
[0.33333333 0.87272727 0. 0.14666667]]
归一化(Normalization)
数据归一化用于需要对特征向量的值进行调整时,以保证每个特征向量的值都缩放到相同的数值范围。
机器学习中最常用的归一化形式就是将特征向量调整为L1范数,使特征向量的数值之和为1。
示例代码:
data_normalied = preprocessing.normalize(data, norm = 'l1')
print("\nL1 normalized data = ", data_normalied)
运行结果:
L1 normalized data =
[[ 0.25210084 -0.12605042 0.16806723 -0.45378151]
[ 0. 0.625 -0.046875 0.328125 ]
[ 0.0952381 0.31428571 -0.18095238 -0.40952381]]
这个方法经常用于确保数据点没有因为特征的基本性质而产生较大差异,即确保数据处于同一数量级,提高不同特征数据的可比性
二值化( Binarization)
二值化用于将数值特征向量转换为布尔类型向量
示例代码:
data_binarized = preprocessing.Binarizer(threshold=1.4).transform(data)
print("\nBinarized data = ", data_binarized)
运行结果:
Binarized data =
[[1. 0. 1. 0.]
[0. 1. 0. 1.]
[0. 1. 0. 0.]]
线性回归
回归是估计输入数据与连续值输出数据之间关系的过程
线性回归的目标是提取输入变量与输出变量的关联线性模型,这就要求实际输出与线性方程预测的输出的残差平方和(sum of squares of differences)最小化。这种方法被称为普通最小二乘法(Ordinary Least Squares, OLS)