您的位置:首页 > 游戏 > 手游 > 数据缩放 101:标准化和最小最大缩放解释

数据缩放 101:标准化和最小最大缩放解释

2024/10/5 20:17:49 来源:https://blog.csdn.net/2401_85233349/article/details/141107687  浏览:    关键词:数据缩放 101:标准化和最小最大缩放解释

何时使用 MinMaxScaler、何时使用 StandardScaler 或其他方法

什么是缩放?欢迎来到雲闪世界。

当您第一次将数据集加载到 Python 脚本或笔记本中,并查看数值特征时,您可能会注意到它们都处于不同的尺度上。

这意味着每个列或特征将具有不同的范围。例如,一个特征的值可能在 0 到 1 之间,而另一个特征的值可能在 1000 到 10000 之间。

以UCI 机器学习库(CC by 4.0 许可证)中的葡萄酒质量数据集为例。

UCI 葡萄酒质量数据集中的一些特征。图片由作者提供

缩放本质上是使所有特征更接近相似或相同的范围或比例的过程,例如对它们进行转换,使所有值都在 0 和 1 之间。

何时(以及为什么)需要扩展

在拟合/训练机器学习模型之前缩放特征很重要,原因如下:

  1. 确保所有特征对模型的贡献均等。当一个特征的数值范围很大时,它可能会对预测产生过高的影响,而其他较小的特征则会被忽略。
  2. 性能改进。当特征被缩放时,某些算法收敛得更快。

特征缩放应数据清理(删除空值、删除/插入异常值等)、通过工程创建新特征以及执行训练/测试拆分之后进行。在模型拟合缩放数据之前,这应该是数据预处理的最后一步。

不过,在决定扩展功能时,请务必记住以下几点:

  • 仅缩放特征,而不缩放目标变量。无需缩放目标变量。
  • 仅缩放数值特征。不要缩放分类特征 — — 而是使用独热编码或其他分类编码方法将这些特征输入模型。
  • 缩放特征仅对某些算法是必要的。使用梯度下降来最小化损失函数的算法(例如线性回归、逻辑回归和神经网络)对特征尺度的差异很敏感,因此缩放是必要的。距离算法(例如 KNN)也对缩放很敏感。但是,基于树的算法(例如决策树和随机森林)则不敏感,因此这些算法不需要缩放特征。

标准化还是最小-最大缩放?

有两种流行的特征缩放方法:标准缩放和最小-最大缩放。

标准缩放(也称为标准化)对数据进行转换,使其平均值为 0,标准差为 1。在 Python 中,StandardScaler 用于执行标准化。

给定数据点 Xi 的标准化方程。图片来源:作者

最小-最大缩放(有时称为规范化,尽管 scikit-learn 文档并未这样提及它)转换数据,使得每个值都介于 0 和 1 之间。在 Python 中,MinMaxScaler 对象用于执行最小最大缩放。

给定数据点 Xi 的归一化方程。图片来自作者

在大多数情况下,在训练 ML 模型之前缩放数据时,标准化或最小-最大缩放都可以完成工作。我建议使用这两种方法尝试你的数据集,看看哪种方法(如果有的话)能产生更好的性能。

然而,在选择一种方法时需要考虑一些因素。

标准化:

  • 结果分布为 0 均值和 1 标准差
  • 许多机器学习算法(尤其是深度学习算法)假设数据具有标准正态分布,即均值为 0、方差为单位
  • 对异常值敏感
  • 更适合已经呈正态分布的数据

最小-最大缩放比例:

  • 将值范围限制为 [0,1]
  • 对异常值敏感
  • 因为它将值的范围限制在 0,1 内,所以在数据稀疏的情况下,它会保留 0 值
  • 保留数据的原始分布/形状

执行

这两个缩放器都可以通过 sklearn.preprocessing 模块获得,并且可以按如下方式导入:

从sklearn.preprocessing导入MinMaxScaler、StandardScaler

重要提示:在缩放数据之前,请务必先将其拆分为训练集和测试集。您不希望将缩放器安装在整个数据集上,因为这会导致数据泄漏。

缩放器应仅适合训练集。要使缩放器适合数据同时转换数据,请在训练集上调用 .fit_transform。对于测试集,您应该只调用 .transform,因为您不想使用测试集来拟合或“训练”缩放器。

# 首先将 X 和 y 分成训练和测试
X_train, X_test,y_train,y_test=train_test_split(X,y) # 定义缩放器对象 - 可以是 MinMaxScaler、StandardScaler 或其他
# 缩放对象
scaler = MinMaxScaler() # 将缩放器拟合到训练集并同时进行变换
X_train = scaler.fit_transform(X_train) 
# 仅在测试集上进行变换
X_test = scaler.transform(X_test)

现在,您有一个可用于训练模型的缩放测试和训练集。

其他缩放方法

由于 StandardScaler 和 MinMaxScaler 都对异常值敏感,scikit learn 提供了一个有用的替代方案:RobustScaler。RobustScaler删除中位数并使用四分位距 (IQR) 作为缩放的参考点。IQR 是一种众所周知的稳健异常值检测方法,这意味着它不受异常值的影响。

另一种选择是在将缩放器拟合到数据之前简单地移除或估算异常值。但是,如果某些方法无法捕获数据集中的所有或大部分异常值,RobustScaler 可能是一个安全的选择。

结论

最终,StandardScaler 和 MinMaxScaler 都是缩放具有不同范围、标准偏差和方差的特征的良好选择。测试两者并查看每个方法如何影响模型的性能是有益的。

以 StandardScaler 作为默认值可能是一个很好的起点,因为许多深度学习算法都假设正态性为平均值 0 和标准差为 1 — — 只要您的数据集不是高度倾斜或异常。

这就是为什么在开始预处理之前探索数据、仔细检查分布和检查异常值非常重要。

感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)

 订阅频道(https://t.me/awsgoogvps_Host)
 TG交流群(t.me/awsgoogvpsHost)

#aws CLI cheat sheet #aws cli Debug #aws cli get S3 object #aws cli login with access key #aws cli to download from s3 #aws command line download from s3 #homebrew install aws cli#aws sdk get caller identity #aws s3 cli get object #aws s3 put object#aws s3 headobject#aws s3 put-object #aws s3 sync vs cp

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com