数据预处理—数据归一化/标准化

1 概述

       数据预处理是在做数据分析前的准备工作,合适正确的数据预处理会为我们后续的分析工作打好基础,提高效率。

       数据归一化是数据预处理的重要组成部分,因为我们平时用到的数据往往不是在同一度量标准下的,比如年龄、收入、体重、房间平米等,虽然都是数值型数据,但却不能进行一些类似线性、距离方面的运算,因此把数据转化为统一标准是非常重要的,下面列出了需要数据归一化的机器学习算法:

"""
需要进行归一化的算法:线性回归、逻辑回归、支持向量机、KNN、K-Means、Adaboost
线性回归、支持向量机、KNN、K-Means都是一些基于距离度量的算法,因此是需要进行数据归一化的;
逻辑回归也是广义的线性回归,而且在参数的求解上使用了梯度上升进行迭代,进行归一化可以让算法更快得找到最优解,加大运算速度;
Adaboost极易受异常值的影响,归一化可以减少异常值对于算法精度的影响,而且Adaboost的基学习器可以自定义,如果基学习器需要归一化,那么Adaboost就是需要归一化的
不需要数据归一化的算法:决策树、随机森林、朴素贝叶斯、XGBoost、LightGBM
贝叶斯、树模型都是基于概率进行计算的,并不依赖特征间的距离或是线性计算等,因此都是不需要进行归一化的
"""

2 数据归一化Python常用函数

有很多手段可以帮助我们进行数据归一化,包括标准化、归一化、log函数、sigmoid函数等等,这里我们介绍最常用的两种处理手段:

-- 归一化 Max-Min --
指对原始数据进行线性变换,将值映射到[0,1]之间
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
新数据=(原数据 - 列向量最小值)/(列向量最大值 - 列向量最小值)
X_scaled = X_std * (max - min) + min
归一化后数据= 新数据 *(列向量最大值 - 列向量最小值)+ 列向量最小值

minmax = preprocessing.MinMaxScaler()     # 建立MinMaxScaler对象

data_minmax = minmax.fit_transform(data)     # 归一化处理

-- 标准化 Z-Score --
基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化

z = (x - u) / s
新数据=(原数据 - 列向量均值)/ 列向量标准差

zscore = preprocessing.StandardScaler()   # 建立StandardScaler对象

data_zs = zscore.fit_transform(data)   # 标准化处理

3 Python归一化实操演示

3.1 导入各种包
import numpy as np
import pandas as pd
from sklearn import datasets  # 导入sklearn自带数据集
from sklearn import preprocessing   # 导入数据数据处理包
3.2 使用波士顿房价数据集
data = datasets.load_boston()   # 导入波士顿房价数据
x = pd.DataFrame(data.data)   # 共13个特征
x.columns = data.feature_names   # 设置特征名
这里使用sklearn自带的波士顿房价数据集,共13列特征,具有各种不同度量的特征,需要归一化
3.3 Z-Score标准化
zscore = preprocessing.StandardScaler()   # 设置标准化对象
x_zs = zscore.fit_transform(x)   # 数据标准化处理
x_zs = pd.DataFrame(x_zs)   
x_zs.columns = data.feature_names   # 添加列名
x_zs

可以看到转化后的特征均在0-1之间

3.4 Max-Min标准化
minmax = preprocessing.MinMaxScaler()   # 设置归一化对象
x_mm = minmax.fit_transform(x)

操作和标准化相同,归一化后的数据也都是在(0,1)之间

x_mm = pd.DataFrame(x_mm)   # 数据归一化处理
x_mm.columns = data.feature_names
x_mm

以上就是的数据归一化和标准化比较常用的处理方式,相对于归一化,我个人是更喜欢用标准化的,因为归一化更容易受到异常值的影响,而标准化相对来说更稳定,标准化后的数据符合标准正态分布,从统计学上说也是数据质量很好的状态~

基本上数据标准化的内容就到这里啦,若有理解有误的地方,欢迎批评指正

ok!感恩的心~

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据预处理中的归一化是一种常用的数据预处理技术,它通过将数据转换到统一的形式,以改善模型的性能并提高预测的准确性。归一化可以消除数据集中的尺度差异,使得不同尺度的特征具有可比性。 常见的归一化方法包括最小-最大归一化、Z-score标准化和按比例缩放(Proportional Scaling)。 1. 最小-最大归一化:这种方法将每个特征的值映射到给定范围内的最小值和最大值之间。最常见的是映射到[0,1]区间,但也可以映射到其他范围,如[-1,1]。这种方法的优点是简单直观,但缺点是可能丢失一些信息,特别是当原始数据分布存在偏态时。 2. Z-score标准化:这种方法将每个特征的均值和标准偏差用于转换数据。这种方法可以处理偏态分布的数据,但仍然会丢失一些原始数据的具体信息。 3. 按比例缩放(Proportional Scaling):这种方法将每个特征的值除以一个固定的常数,这个常数通常是该特征的最大值。这种方法可以保持原始数据的相对比例,但可能会改变数据的顺序。 在进行归一化之前,通常需要先清洗数据,移除缺失值、异常值和噪声。归一化完成后,可能需要再对数据进行聚合或转化,以便于后续的模型训练。 请注意,选择哪种归一化方法取决于具体的数据集和所使用的模型。有时可能需要结合使用多种方法来获得最佳效果。在进行归一化时,应密切关注数据的分布和相关性,以避免引入新的偏见或模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值