python数据预处理之数据标准化的几种处理方式

作者:泛泛之素 时间:2022-12-14 11:48:29 

何为标准化:

在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。

几种标准化方法:

归一化Max-Min

min-max标准化方法是对原始数据进行线性变换。设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的值x',其公式为:

新数据=(原数据-最小值)/(最大值-最小值)

这种方法能使数据归一化到一个区域内,同时不改变原来的数据结构。

实现中心化Z-Score

这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x'。

z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。

新数据=(原数据-均值)/标准差

这种方法适合大多数类型数据,也是很多工具的默认标准化方法。标准化之后的数据是以0为均值,方差为以的正太分布。但是Z-Score方法是一种中心化方法,会改变原有数据的分布结构,不适合用于对稀疏数据做处理。

很多时候数据集会存在稀疏特征,表现为标准差小,很多元素值为0,最常见的稀疏数据集是用来做协同过滤的数据集,绝大部分数据都是0。对稀疏数据做标准化,不能采用中心化的方式,否则会破坏稀疏数据的结构。

用于稀疏数据的MaxAbs

最大值绝对值标准化(MaxAbs)即根据最大值的绝对值进行标准化,假设原转换的数据为x,新数据为x',那么x'=x/|max|,其中max为x锁在列的最大值。

该方法的数据区间为[-1, 1],也不破坏原数据结构的特点,因此也可以用于稀疏数据,一些稀疏矩阵。

针对离群点的RobustScaler

有些时候,数据集中存在离群点,用Z-Score进行标准化,但是结果不理想,因为离群点在标准化后丧失了利群特性。RobustScaler针对离群点做标准化处理,该方法对数据中心化的数据的缩放健壮性有更强的参数控制能力。

python实现


import numpy as np
import pandas as pd
from sklearn import preprocessing
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
%matplotlib inline

# 导入数据
data = make_moons(n_samples=200, noise=10)[0]

#Z-Score标准化
#建立StandardScaler对象
zscore = preprocessing.StandardScaler()
# 标准化处理
data_zs = zscore.fit_transform(data)

#Max-Min标准化
#建立MinMaxScaler对象
minmax = preprocessing.MinMaxScaler()
# 标准化处理
data_minmax = minmax.fit_transform(data)

#MaxAbs标准化
#建立MinMaxScaler对象
maxabs = preprocessing.MaxAbsScaler()
# 标准化处理
data_maxabs = maxabs.fit_transform(data)

#RobustScaler标准化
#建立RobustScaler对象
robust = preprocessing.RobustScaler()
# 标准化处理
data_rob = robust.fit_transform(data)

# 可视化数据展示
# 建立数据集列表
data_list = [data, data_zs, data_minmax, data_maxabs, data_rob]
# 创建颜色列表
color_list = ['blue', 'red', 'green', 'black', 'pink']
# 创建标题样式
title_list = ['source data', 'zscore', 'minmax', 'maxabs', 'robust']

# 设置画幅
plt.figure(figsize=(9, 6))
# 循环数据集和索引
for i, dt in enumerate(data_list):
 # 子网格
 plt.subplot(2, 3, i+1)
 # 数据画散点图
 plt.scatter(dt[:, 0], dt[:, 1], c=color_list[i])
 # 设置标题
 plt.title(title_list[i])
# 图片储存
plt.savefig('xx.png')
# 图片展示
plt.show()

python数据预处理之数据标准化的几种处理方式

参考:
《python数据分析与数据化运营》 宋天龙

来源:https://blog.csdn.net/tonydz0523/article/details/84498469

标签:python,数据标准化
0
投稿

猜你喜欢

  • Python利用Pillow处理图像的实践指南

    2023-05-07 09:15:30
  • 详解java连接mysql数据库的五种方式

    2024-01-19 06:38:21
  • 用 iframe 解决下拉框与层之冲突

    2008-04-28 12:24:00
  • 使用Python实现分别输出每个数组

    2021-10-30 00:28:49
  • python实现每次处理一个字符的三种方法

    2023-03-07 12:27:30
  • javascript cookie的基本操作(添加和删除)

    2024-05-11 09:43:24
  • asp.net实现存储和读取数据库图片

    2024-01-19 06:56:32
  • SQL Server日期计算第1/2页

    2024-01-23 20:30:59
  • SQL Server 2008登录错误:无法连接到(local)解决方法

    2024-01-21 00:39:06
  • Laravel重定向,a链接跳转,控制器跳转示例

    2024-04-28 09:45:02
  • Python3.4编程实现简单抓取爬虫功能示例

    2022-04-23 17:48:15
  • python调用win32接口进行截图的示例

    2021-07-22 07:19:45
  • .NET 2.0获取配置文件AppSettings和ConnectionStrings节数据的方法

    2023-06-30 11:34:10
  • SQL语句练习实例之七 剔除不需要的记录行

    2011-11-03 16:50:51
  • 如何将Yolov5的detect.py修改为可以直接调用的函数详解

    2021-12-12 22:21:28
  • python中xlutils库用法浅析

    2023-06-05 15:22:26
  • Sun拟10亿美元收购MySQL

    2008-01-17 11:56:00
  • Python3.6笔记之将程序运行结果输出到文件的方法

    2023-08-02 08:27:44
  • 教你使用vue-autofit 一行代码搞定自适应可视化大屏

    2024-05-09 09:05:53
  • 在ASP中使用SQL语句之11:记录统计

    2007-08-11 13:27:00
  • asp之家 网络编程 m.aspxhome.com