11 特征工程之特征缩放

在机器学习中,特征缩放是数据预处理的一个重要步骤。它的目的是将特征变量的数值转换到一个相似的范围,从而提高模型的表现和收敛速度。在本节中,我们将深入探讨特征缩放的概念、常用方法和实操案例,帮助你更好地理解和应用它。

为什么需要特征缩放?

在许多机器学习算法中,特别是基于距离的算法(如k近邻、支持向量机等),特征之间的尺度差异可能会影响到模型的性能。例如,在一个特征为0到1的区间,另一个特征为0到1000,后者的特征值会在计算距离时占据主导地位,从而影响模型的结果。因此,对特征进行缩放是减少这种影响的有效方法。

常见的特征缩放方法

以下是两种常用的特征缩放方法:

1. 标准化(Z-score标准化)

标准化将特征转化为均值为0,方差为1的分布。其公式为:

$$
z = \frac{x - \mu}{\sigma}
$$

其中,$x$为原始特征值,$\mu$为均值,$\sigma$为标准差。

当特征数据呈现正态分布时,标准化效果尤为显著。

2. 最小-最大缩放

最小-最大缩放将特征值线性压缩到范围为[0, 1]。其公式为:

$$
x’ = \frac{x - \text{min}(X)}{\text{max}(X) - \text{min}(X)}
$$

其中,$x$为原始特征值,$\text{min}(X)$和$\text{max}(X)$分别为特征的最小值和最大值。

该方法适用于特征分布不大,且无明显异常值的情况。

实际案例

我们来看一个简单的案例,使用Scikit-Learn对数据进行特征缩放。假设我们有一个包含多个特征的数据集,我们将应用这两种缩放技术。

数据集准备

1
2
3
4
5
6
7
import pandas as pd
from sklearn.datasets import load_iris

# 加载鸢尾花数据集
data = load_iris()
X = pd.DataFrame(data.data, columns=data.feature_names)
print("原始数据:\n", X.head())

使用标准化

1
2
3
4
5
6
7
8
from sklearn.preprocessing import StandardScaler

# 实例化标准化对象
scaler = StandardScaler()

# 进行标准化
X_standardized = scaler.fit_transform(X)
print("标准化后的数据:\n", X_standardized[:5])

使用最小-最大缩放

1
2
3
4
5
6
7
8
from sklearn.preprocessing import MinMaxScaler

# 实例化最小-最大缩放对象
min_max_scaler = MinMaxScaler()

# 进行最小-最大缩放
X_min_max_scaled = min_max_scaler.fit_transform(X)
print("最小-最大缩放后的数据:\n", X_min_max_scaled[:5])

通过以上的代码,我们可以看到原始数据经过标准化和最小-最大缩放后的不同表现。不同的缩放方法适用于不同的场景,选择合适的方法有助于提高模型的整体性能。

小结

通过本节的学习,我们了解到特征缩放是特征工程中的重要一步,尤其是在使用距离敏感算法时,合理的缩放能够显著提升模型的效果。我们介绍了标准化和最小-最大缩放这两种常用方法,并通过Scikit-Learn的实现进行了实际操作。

在下一篇中,我们将讨论如何处理缺失值,这是数据预处理中的另一个重要环节。希望大家继续关注,让我们在特征工程的道路上不断前行!

11 特征工程之特征缩放

https://zglg.work/scikit-learn-zero/11/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

学习下节

复习上节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论