sklearn基础--『预处理』之 数据缩放

数据的预处理 是数据分析,或者机器学习训练前的重要步骤。

通过数据预处理,可以

  • 提高数据质量,处理数据的缺失值、异常值和重复值等问题,增加数据的准确性和可靠性
  • 整合不同数据,数据的来源和结构可能多种多样,分析和训练前要整合成一个数据集
  • 提高数据性能,对数据的值进行变换,规约等(比如无量纲化),让算法更加高效

本篇介绍的数据缩放处理,主要目的是消除数据的不同特征之间的量纲差异,使得每个特征的数值范围相同。这样可以避免某些特征对模型的影响过大,从而提高模型的性能。

1. 原理

数据缩放有多种方式,其中有一种按照最小值-最大值缩放 的算法是最常用的。

其主要步骤如下:

  1. 计算数据列的最小值(min)和最大值(max
  2. 对数据列中的每个值进行最小-最大缩放,即将其转换为 **[0,1]区间 **之内的一个值

缩放公式为: <math xmlns="http://www.w3.org/1998/Math/MathML"> n e w _ d a t a = d a t a − m i n m a x − m i n new\_data = \frac{data -min}{max-min} </math>new_data=max−mindata−min

实现缩放的代码如下:

python 复制代码
# 数据缩放的实现原理

data = np.array([10, 20, 30, 40, 50])
min = np.min(data)
max = np.max(data)

data_new = (data - min) / (max-min)

print("处理前: {}".format(data))
print("处理后: {}".format(data_new))

# 运行结果
处理前: [10 20 30 40 50]
处理后: [0.   0.25 0.5  0.75 1.  ]

数值被缩放到 **[0,1]区间 **之内。

这个示例只是为了演示缩放的过程,实际场景中最好使用scikit-learn库中的函数。

scikit-learn中的minmax_scale函数是封装好的数据缩放函数。

python 复制代码
from sklearn import preprocessing as pp

data = np.array([10, 20, 30, 40, 50])
pp.minmax_scale(data, feature_range=(0, 1))

# 运行结果
array([0.  , 0.25, 0.5 , 0.75, 1.  ])

使用scikit-learn中的minmax_scale函数得到的结果是一样的,数据也被压缩到 **[0,1]区间 **之内。

所以 数据缩放 的这个操作有时也被称为归一化

不过,数据缩放 不一定非得把数据压缩到 **[0,1]区间 **之内,

通过调整feature_range参数,可以把数据压缩到任意的区间。

python 复制代码
# 压缩到[0, 1]
print(pp.minmax_scale(data, feature_range=(0, 1)))

# 压缩到[-1, 1]
print(pp.minmax_scale(data, feature_range=(-1, 1)))

# 压缩到[0, 5]
print(pp.minmax_scale(data, feature_range=(0, 5)))

# 运行结果
[0.   0.25 0.5  0.75 1.  ]
[-1.  -0.5  0.   0.5  1. ]
[0.   1.25 2.5  3.75 5.  ]

2. 作用

数据缩放的作用主要有:

2.1. 统一数据尺度

通过缩放处理 ,将不同量纲、不同尺度、不同单位的数据转换成一个统一的尺度,

避免由于数据量纲不一致而导致的数据分析结果失真或误导。

2.2. 增强数据可比性

通过缩放处理 ,将不同量纲、不同尺度、不同单位的数据转换成一个统一的尺度,使得不同数据之间的比较更加方便和有意义。

例如,在评价多个样本的性能时,如果采用不同的量纲、不同尺度、不同单位进行比较,会导致比较结果不准确甚至误导。

通过统一的缩放处理之后,可以消除这种影响,使得比较结果更加准确可信。

2.3. 增强数据稳定性

通过缩放处理 ,将数据的数值范围调整到一个相对较小的区间内,

增加数据的稳定性,避免由于数据分布范围过大或过小而导致的分析误差或计算误差。

2.4. 提高算法效率和精度

通过缩放处理 ,使得一些计算算法的效率和精度得到提高。

例如,在神经网络算法中,如果输入数据的尺度过大或过小,会导致算法训练时间过长或过短,同时也会影响算法的精度和稳定性。

而缩放处理之后,就可以使算法的训练时间和精度得到优化。

3. 总结

scikit-learn库中,处理数据缩放不是只有上面的最小值-最大值缩放

还可用StandardScaler进行标准化缩放;用RobustScaler实现尺度缩放和平移等等。

进行数据缩放时,需要注意 一点,就是缩放处理对异常值 非常敏感,

如果数据中存在极大或者极小的异常值 时,有可能会破坏原始数据本身。

所以,缩放处理前,最好把异常值过滤掉。

相关推荐
青春不败 177-3266-052021 分钟前
MATLAB近红外光谱分析技术及实践技术应用
随机森林·机器学习·支持向量机·matlab·卷积神经网络·遗传算法·近红外光谱
NeoFii6 小时前
Day 22: 复习
机器学习
巫婆理发2228 小时前
强化学习(第三课第三周)
python·机器学习·深度神经网络
Blossom.1189 小时前
基于深度学习的图像分类:使用Capsule Networks实现高效分类
人工智能·python·深度学习·神经网络·机器学习·分类·数据挖掘
Coovally AI模型快速验证11 小时前
数据集分享 | 智慧农业实战数据集精选
人工智能·算法·目标检测·机器学习·计算机视觉·目标跟踪·无人机
GG向前冲12 小时前
机器学习对中特估股票关键特征选取的应用与研究
人工智能·机器学习·投资组合
计算机sci论文精选14 小时前
CVPR 2024 3D传感框架实现无监督场景理解新纪元
人工智能·机器学习·计算机视觉·3d·cvpr·传感技术
zzywxc78717 小时前
详细介绍AI在金融、医疗、教育、制造四大领域的落地案例,每个案例均包含实际应用场景、技术实现方案、可视化图表和核心代码示例
人工智能·深度学习·机器学习
Monkey PilotX18 小时前
VLA:自动驾驶的“新大脑”?
人工智能·机器学习·计算机视觉·自动驾驶
超龄超能程序猿19 小时前
图片查重从设计到实现(4)图片向量化存储-Milvus 单机版部署
人工智能·yolo·机器学习