数据预处理——归一化标准化
数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。
去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权
最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import preprocessing
% matplotlib inline
0-1标准化
又叫Max-Min标准化,公式:
x' = \frac{x-min}{max-min}
# 创建数据
df = pd.DataFrame({'value1':np.random.rand(100)*10,'value2':np.random.rand(100)*100})
print(df.head())
print('---------------')def maxmin (df,*cols):df_m = df.copy()for col in cols:ma = df[col].max()mi = df[col].min()df_m[col + '_m'] = (df[col] - mi) / (ma - mi)return df_m
df1 = maxmin(df,'value1','value2')
print(df1.head())
value1 value2
0 7.363287 15.749935
1 5.713568 33.233757
2 6.108123 21.522650
3 0.804442 85.003204
4 6.387467 21.264910
---------------value1 value2 value1_m value2_m
0 7.363287 15.749935 0.740566 0.151900
1 5.713568 33.233757 0.574296 0.329396
2 6.108123 21.522650 0.614062 0.210505
3 0.804442 85.003204 0.079521 0.854962
4 6.387467 21.264910 0.642216 0.207888
# 使用 sklearn中的 scale 函数
minmax_scaler = preprocessing.MinMaxScaler() # 创建 MinMaxScaler对象
df_m1 = minmax_scaler.fit_transform(df) # 标准化处理
df_m1 = pd.DataFrame(df_m1,columns=['value1_m','value2_m'])
df_m1.head()
value1_m | value2_m | |
---|---|---|
0 | 0.740566 | 0.151900 |
1 | 0.574296 | 0.329396 |
2 | 0.614062 | 0.210505 |
3 | 0.079521 | 0.854962 |
4 | 0.642216 | 0.207888 |
Z-Score
也叫z分数,是一种具有相等单位的量数。它是将原始分数与团体的平均数之差除以标准差所得的商数,是以标准差为单位度量原始分数离开其平均数的分数之上多少个标准差,或是在平均数之下多少个标准差。
- 它是一个抽象值,不受原始测量单位的影响,并可接受进一步的统计处理
- 处理后的数值服从均值为0,方差为1的标准正态分布。
- 一种中心化的方法,会改变原数据的数据分布,不适用于对稀疏数据做处理z=x−μσ z = x − μ σz = \frac{x-\mu }{\sigma }
def data_Znorm(df, *cols):df_n = df.copy()for col in cols:u = df_n[col].mean()std = df_n[col].std()df_n[col + '_Zn'] = (df_n[col] - u) / stdreturn(df_n)
# 创建函数,标准化数据df_z = data_Znorm(df,'value1','value2')
u_z = df_z['value1_Zn'].mean()
std_z = df_z['value1_Zn'].std()
print(df_z.head())
print('标准化后value1的均值为:%.2f, 标准差为:%.2f' % (u_z, std_z))
# 标准化数据
# 经过处理的数据符合标准正态分布,即均值为0,标准差为1# 什么情况用Z-score标准化:
# 在分类、聚类算法中,需要使用距离来度量相似性的时候,Z-score表现更好
value1 value2 value1_Zn value2_Zn
0 7.363287 15.749935 0.744641 -1.164887
1 5.713568 33.233757 0.196308 -0.550429
2 6.108123 21.522650 0.327450 -0.962008
3 0.804442 85.003204 -1.435387 1.268973
4 6.387467 21.264910 0.420298 -0.971066
标准化后value1的均值为:-0.00, 标准差为:1.00
# Z-Score标准化
zscore_scale = preprocessing.StandardScaler()
df_z1 = zscore_scale.fit_transform(df)
df_z1 = pd.DataFrame(df_z1,columns=['value1_z','value2_z'])
df_z1.head()
value1_z | value2_z | |
---|---|---|
0 | 0.748393 | -1.170755 |
1 | 0.197297 | -0.553202 |
2 | 0.329100 | -0.966855 |
3 | -1.442619 | 1.275366 |
4 | 0.422416 | -0.975959 |
MaxAbs
最大值绝对值标准化,和MaxMin方法类似,将数据落入一定的区间[-1,1],但是MaxAbs具有不破坏数据结构的特点,可以用于稀疏数据,或者
是系数的CSR(行压缩)和CSC(列压缩)矩阵(为矩阵的两种储存格式)
x' = \frac{x}{\left |max \right |}
# MaxAbs标准化
maxbas_scaler = preprocessing.MaxAbsScaler()
df_ma = maxbas_scaler.fit_transform(df)
df_ma = pd.DataFrame(df_ma,columns=['value1_ma','value2_ma'])
df_ma.head()
value1_ma | value2_ma | |
---|---|---|
0 | 0.740969 | 0.158626 |
1 | 0.574957 | 0.334715 |
2 | 0.614661 | 0.216766 |
3 | 0.080951 | 0.856112 |
4 | 0.642772 | 0.214170 |
RobustScaler
在某些情况下,假如数据中有离群点,我们可以使用Z-Score进行标准化,但是标准化后的数据并不理想,因为异常点的特征往往在标准化后容易失去离群特征,此时就可以用RobustScaler 针对离群点做标准化处理。
此方法对数据中心话和数据的缩放健壮性有更强的参数控制能力
————《Python数据分析与数据化运营》
# RobustScaler标准化
robustscaler = preprocessing.RobustScaler()
df_r = robustscaler.fit_transform(df)
df_r = pd.DataFrame(df_r,columns=['value1_r','value2_r'])
df_r.head()
value1_r | value2_r | |
---|---|---|
0 | 0.360012 | -0.644051 |
1 | 0.055296 | -0.303967 |
2 | 0.128174 | -0.531764 |
3 | -0.851457 | 0.703016 |
4 | 0.179770 | -0.536777 |
绘制标准化散点图
data_list = [df, df_m1, df_ma, df_z1, df_r]
title_list = ['soure_data', 'maxmin_scaler', 'maxabs_scaler', 'zscore_scaler','robustscaler']
fig = plt.figure(figsize=(12,6))
for i,j in enumerate(data_list):
# 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,
# 利用它可以同时获得索引和值,enumerate多用于在for循环中得到计数'''plt.subplot(2,3,i+1)plt.scatter(j.iloc[:,:-1],j.iloc[:,-1])plt.title(title_list[i])
数据预处理——归一化标准化相关推荐
- 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
本文主要是对照scikit-learn的preprocessing章节结合代码简单的回顾下预处理技术的几种方法,主要包括标准化.数据最大最小缩放处理.正则化.特征二值化和数据缺失值处理.内容比较简单, ...
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
20220121 z-score标准化 模型存储和load再调用其实没有关系 再load计算的时候,也是以实际的数据重新计算 并不是以save模型的边界来计算的 20211227 onehot训练集保 ...
- 机器学习之数据预处理——归一化,标准化
机器学习之数据预处理--归一化,标准化 基础知识 1.什么是特征预处理 2.预处理方法 : 3.预处理API: 数据的标准化(normalization)和归一化 数据的标准化 数据归一化 1 把数变 ...
- Scikit-learn 数据预处理之标准化StandardScaler
Scikit-learn 数据预处理之标准化StandardScaler 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 St ...
- 数据预处理|关于标准化和归一化的一切
数据预处理是最令数据科学家头秃的工作 之前在知乎看过一个问题你为什么离开数据科学行业?一位知友est答曰:数据清洗10小时,拟合2分钟,如此重复996. 这条回答下面的评论更是精彩,居然真的会眼瞎.. ...
- 数据预处理 - 归一化与Z-Score标准化
归一化 归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为标量, 在多种计算中都经常用到这种方法.归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量 ...
- 均值归一化_数据预处理:标准化和归一化
网上很多关于标准化和归一化的文章,不少是误人子弟的存在.这篇文字希望给大家讲清讲透这两个概念. 一.标准化(standardization) 公式一般为:(X-mean)/std,其中mean是平均值 ...
- 数据预处理之标准化(Standardization)、归一化(Normalization)、中心化/零均值化(Zero-centered)
一.数据标准化的意义: 1.数据的量纲不同:数量级差别很大 经过标准化处理后,原始数据转化为无量纲化指标测评值,各指标值处于同一数量级别,可进行综合测评分析. 如果直接用原始指标值进行分析,就会突出数 ...
- 深度学习数据预处理——批标准化(Batch Normalization)
数据预处理最常见的方法就是中心化和标准化,中心化相当于修正数据的中心位置,实现方法非常简单,就是在每个特征维度上减去对应的均值,最后得到 0 均值的特征.标准化也非常简单,在数据变成 0 均值之后,为 ...
最新文章
- c语言节点的作用,C语言链表(基本功能函数)
- 安全函数不安全-多线程慎用List.h
- Shell - 脚本实现控制台一键编译运行 C++ 代码
- ComblockEngine 引擎实践
- 2021凯络趋势报告
- Qt工作笔记-MySQL获取select表头(域)数据
- python虚函数_virtual(虚函数) vtbl(虚函数表)与vptr(虚函数表指针)
- 让网络更轻盈——网络功能虚拟化技术的现状和未来(中兴通讯)
- 利用iTextSharp组件给PDF文档添加图片水印,文字水印
- 在我看来,代码审查就是在排大便...
- 浅谈Netty相关概念
- 高并发解决方案相关面试题
- DeviceOrientation ---实现指南针
- 论文写作中插入公式间距变大怎么办?
- 【C语言】输入两个正整数m和n,求其最大公约数和最小公倍数。(要求用while语句实现)
- java程序员书单--成长之路--职业发展,你读过几本
- python调用so库
- [Linux] Linux中/tmp目录下文件莫名丢失
- linux美学设计,扁平化设计美学探讨
- 中国汽车使用保险行业市场供需与战略研究报告
热门文章
- 【点云压缩】Lossless Coding of Point Cloud Geometry using a Deep Generative Model
- Event Sourcing和CQRS实现
- 知乎热议:替代 Matlab 的国产软件出现,开发商称半年内实现 Matlab 功能的70%
- mSystems:苏晓泉、徐健等发布全球微生物组结构和功能搜索平台2.0
- 电脑与云服务器的区别吗,云服务器和普通电脑有什么不同区别?
- 继续教育公需课——人工智能技术及其发展趋势答案
- vue 组件封装——可自由拖拽移动的盒子
- 大数据开发是做什么的?怎样入门?
- WPF 实现柱形统计图
- 【读书笔记】分布式下服务可靠性保障