特征预处理:归一化

特征预处理,归一化。解决训练样本的特征数值差距过大,各特征数值权重不一致,最终影响模型预测结果。

归一化适合少数据、数据极可靠的场景。

from sklearn.preprocessing import MinMaxScaler

'''
特征预处理,归一化,目的是减少由于各特征的数值差异过大,最终对模型预测结果影响过大
统一之后的特征值范围默认是[0,1]之间
计算公式:特征值x与最小特征值min的差,除以最大特征值max与最小特征值min的差
有时也可以进行扩大特征值至10,不过需要进一步计算
这里有一个要注意的是,计算时是以一列为标准,因为特征就是一列
'''
# 1、准备数据,x是训练集的特征值,不包含目标值
# 这里要注意,特征是一列,但是在输入模型时,仍是以一个样本的方式传入,如[90,2,10,40]是一个样本,即一行,这一行有4列4个特征
x = [[90,2,10,40],[60,4,15,45],[75,3,13,46]]

# 2、创建归一化实例
process = MinMaxScaler()

# 3、执行归一化处理,并将完成处理的结果返回
data = process.fit_transform(x)

# 4、输出特征化预处理的样本特征值
print(data)

# 结果返回
'''
[[1.         0.         0.         0.        ]
 [0.         1.         1.         0.83333333]
 [0.5        0.5        0.6        1.        ]]
'''