[Sklearn应用] Preprocessing data(一) 标准化(Standardization) 与 正则化/归一化(Normalization)

数据标准化和正则化是机器学习预处理的重要步骤。标准化通过z-score方法使特征平均值为0,方差为1;正则化则是将样本缩放到单位范数。Scikit-learn提供了StandardScaler进行标准化,MinMaxScaler进行属性范围缩放,以及Normalizer进行正则化处理。在处理过程中,注意区分标准化和正则化的应用场景,以提高模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此内容在sklearn官网地址: http://scikit-learn.org/stable/modules/preprocessing.html#
sklearn版本:0.18.2

部分文字引用自: http://www.cnblogs.com/chaosimple/p/4153167.html

Standardization 标准化
Normalization 正则化

是否需要进行数据标准化?

一般涉及到梯度下降和距离的计算需要进行标准化或正则化。例如Logistic Regression、SVM、PCA等。

很多博客中将标准化和正则化归为同一种处理方式,实际上他们是不同的情况,标准化针对的是把整列(特征)作为处理对象,而正则化把行(样本)作为处理对象,而且他们处理的公式方法也不同。

标准化(Standardization)

Standardization of datasets is a common requirement for many machine learning estimators implemented in scikit-learn; they might behave badly if the individual features do not more or less look like standard normally distributed data: Gaussian with zero mean and unit variance. ——scikit-learn.org

标准化是常用的机器学习特征处理的方法,它可以将一列数据的平均值变为0,方差变为1 。但是不改变原来的数据结构分布,只是将数值进行了缩放。使得所有特征在同一量纲下进行数据处理,避免有些特征整体偏大对整体处理造成偏差。
z-score 方法这里写图片描述
μ \mu μ 是平均值, σ \sigma σ 是标准差。
得到的结果是,对于每个特征(每列),他们的平均值为0,方差为1。

正则化/归一化(Normalization)

Normalization is the process of scaling individual samples to have unit norm. This process can be useful if you plan to use a quadratic form such as the dot-product or any other kernel to quantify the similarity of any pair of samples. ——scikit-learn.org

  正则化针对的是每行,或者说每个样本的不同特征。一般计算样本之间距离时使用其做归一化处理,比如聚类,K近邻、文本分类。

  正则化的过程是将每个样本缩放到单位范数(每个样本的范数为1),如果后面要使用如二次型(点积)或者其它核方法计算两个样本之间的相似性这个方法会很有用。
  Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(L1,L2)等于1。

p-范数的计算公式:

归一化种常见的数据预处理技术,目的是将特征值缩放到个特定的范围(如 [0, 1] 或 [-1, 1]),以便提高模型训练的效果和速度。在 Python 中,可以使用多种方法实现归一化。 ### 常见的归一化方法 #### 1. 最小最大归一化 (Min-Max Normalization) - 公式: \[ X_{\text{normalized}} = \frac{X - X_{\min}}{X_{\max} - X_{\min}} \] - 将数据映射到 [0, 1] 范围内。 - 使用 `sklearn.preprocessing.MinMaxScaler` 可以轻松实现: ```python from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() data_normalized = scaler.fit_transform(data) ``` #### 2. 标准化 (Standardization / Z-Score Normalization) - 公式: \[ X_{\text{standardized}} = \frac{X - \mu}{\sigma} \] - 数据经过标准化后会变成均值为 0、标准差为 1 的分布。 - 使用 `sklearn.preprocessing.StandardScaler` 实现: ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() data_standardized = scaler.fit_transform(data) ``` #### 3. L1/L2 正则化归一化 - 对于每行样本计算其 L1 或 L2 范数,并将其单位化。 - 使用 `sklearn.preprocessing.Normalizer`: ```python from sklearn.preprocessing import Normalizer normalizer = Normalizer(norm='l2') # 'l2' or 'l1' data_normalized = normalizer.transform(data) ``` --- **为什么需要归一化?** 1. 防止某些数值较大的特征主导优化过程; 2. 加快梯度下降算法收敛速度; 3. 改善模型性能并减少过拟合风险。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值