【机器学习】Scikit-Learn数据预处理文档翻译+笔记记录 - 1

本文档介绍了Scikit-Learn中数据预处理的标准化方法,包括均值移除和方差缩放。标准化是许多机器学习算法的要求,有助于改善模型性能。文中详细讲解了如何使用`StandardScaler`进行数据标准化,并探讨了特征区间缩放(如MinMaxScaler和RobustScaler)以及如何在稀疏数据上进行缩放。对于含有异常值的数据,文中推荐使用RobustScaler。
摘要由CSDN通过智能技术生成

翻译本文档,系统学习以下数据的预处理方式。

原文档地址:https://scikit-learn.org/stable/modules/preprocessing.html#preprocessing

4.3 预处理数据

sklearn.preprocessing包提供了几种常用的工具函数以及转换类来将原始的特征向量数据转换为更加适合后续模型使用的表达。

一般来说,学习算法能够从数据集的标准化中受益。如果数据集中存在异常数据,那么健壮的scalerstransformers会更适用(这里没有对scalers和transformer进行翻译,目的是保持和API的一种联系)。不同的scalerstransformersnormalizers在包含边缘异常数据的数据集上的表现可以参考这篇文章:包含异常数据的数据集上的不同scalers的效果比较

4.3.1 Standardization

PS: 这个也称之为均值移除+方差缩放。在深入到背后的原理后,就更好理解了。

对数据集进行标准化,是很多scikit-learn中的机器学习预测器的要求。如果有单个特征不是多多少受看起来像是标准正态分布–均值为0方差为1的高斯分布,那模型的表现可能就很差。

实际上,我们通常会选择忽略数据的分布形状,而是直接对数据变换:通过对每个特征去除均值使其中心分布,然后对非常数特征进行缩放,使其方差为1。

比如,很多学习算法中的目标函数的组成元素假定了所有的特征是均值为0且方差在同一量级的。如果某个特征的方差的数量级大于其他的特征,那么它就可能主导整个目标函数,使得学习器不能从其他特征中学到我们期待的东西。

函数scale为我们提供了一个快速易用的方法,对数组类型的数据集执行标准化操作:

# scale函数
from sklearn import preprocessing
import numpy as np

X_train = np.array([
   [1., -1., 2.],
   [2., 0., 0.],
   [0., 1., -1.]
])

X_scaled = preprocessing.scale(X_train)
X_scaled

输出结果:


array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])
>>> X_scaled.mean(axis=0)
array([0., 0., 0.])

>>> X_scaled.std(axis=0)
array([1., 1., 1.])

可以看出,通过调用preprocessing.scale(X_train)可以将数据集变成标准正态分布

实际上,preprocessing模块进一步提供了一个工具类叫StandardS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值