Python 机器学习-归一化、标准化

特征工程定义与实现

特征工程定义:是将原始数据转化为更好的代表预测模型的潜在问题的特征的过程,从而提高了未知数据的预测准确性。数据和特征决定了机器学习的上限,而模型和算法知识逼进这个上限而已

  1. 数值类型预处理:1:标准化缩放、归一化
  2. 时间类型:时间的序列、切分
  3. 类别类型数据:one-hot编码
  4. PCA进行主特征分析 (过滤关联性较弱的特征,提升高运算和学习的效率)

归一化实现

通过对原始数据进行变换,把数据映射到(0~1)之间。公式使用:作用于每一列,max为当前列最大值,min为当前列最小值,那么x”为最终结果,公式中的mx和mi默认为1,0

在这里插入图片描述
from sklearn.preprocessing import MinMaxScaler,StandardScaler

mm = MinMaxScaler()
# 归一化
data = mm.fit_transform([[90, 2, 10, 40],
                         [60, 4, 15, 45],
                         [75, 3, 13, 46]])
print('归一化之后的数据\n',data)
data = mm.inverse_transform(data)
print('原始数据\n',data)
print('-'*100)
std = StandardScaler()

归一化缺点

  1. 根据公式,当前待计算的x为当前列最大值时,最终归一化为1,待计算的x为当前列最小值时,最终归一化为0
  2. 对异常点的包容性差 (如果异常点影响了最大值或者最小值,则会造成整体数值计算偏差),因此这种方式稳定性较差,适合比较精确数据模型

标准化实现

第1步: 求出每列特征值的标准差(方差开根号则为标准差), 而方差为各个数据与平均数之差的平方的和的平均数,公式作用于每一列,mean为平均数,var为方差,δ为标准差(方差开根号则为标准差)。

在这里插入图片描述
第2步: 每个特征值的标准化公式为:(特征值 – 平均值) / δ标准差。通过公式可以知特征值越靠近平平均值则最后结果越趋于0,因此数据会在0左右进行分布,如果数据越趋于零则数据稳定性越好。

在这里插入图片描述
data = std.fit_transform([[90, 2, 10, 40],
                         [60, 4, 15, 45],
                         [75, 3, 13, 46]])
print('每列特征的平均值',std.mean_)
print('归一化之后的数据\n',data)
data = std.inverse_transform(data)
print('原始数据\n',data)

发表评论

电子邮件地址不会被公开。 必填项已用*标注