数据挖掘|数据预处理|基于Python的数据标准化方法

基于Python的数据标准化方法

    • [1. z-score方法](#1. z-score方法)
    • [2. 极差标准化方法](#2. 极差标准化方法)
    • [3. 最大绝对值标准化方法](#3. 最大绝对值标准化方法)

在数据分析之前,通常需要先将数据标准化(Standardization),利用标准化后的数据进行数据分析,以避免属性之间不同度量和取值范围差异造成数据对分析结果的影响。

1. z-score方法

Z-score方法是基于原始数据的均值和标准差来进行数据标准化的,处理后的数据均值为0,方差为1,符合标准正态分布,且无量纲。其主要目的是将不同量级的数据统一化为同一个量级,用计算出的z-score值衡量,保证了数据间具有可比性。常用形式为: x n o r m a l i z a t i o n = x − μ σ x_{normalization} = \frac{x-\mu}{\sigma} xnormalization=σx−μ

其中 x x x表示原始数据, μ \mu μ表示原始数据的平均值, σ \sigma σ表示原始数据的标准差, x n o r m a l i z a t i o n x_{normalization} xnormalization表示标准化后的数据。数据标准化的方法有自定义和 S t a n d a r S c a l e r ( ) StandarScaler() StandarScaler()等方法。

以下使用sklearn模块中的方法StandardScaler()来实现数据标准化,需要调用sklearn包。

python 复制代码
#自定义数据标准化示例
def my_scale(data):
    mean= sum(data)/len(data)  #求均值
    #求方差
    variance=( sum([(i-mean)**2 for i in data]))/len(data)
    #按照公式标准化
    normal = [(i - mean)/(variance)**0.5 for i in data] 
    return normal
import numpy as np
X = np.array([[2.,-1.,2.],[2.,0.,0.],[0.,1.,-2.]])
scale=my_scale(X)
xs=np.array(scale)
print("标准化前的数据:\n",X)
print("标准化后的数据:\n",xs)
复制代码
标准化前的数据:
 [[ 2. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -2.]]
标准化后的数据:
 [[ 0.70710678 -1.22474487  1.22474487]
 [ 0.70710678  0.          0.        ]
 [-1.41421356  1.22474487 -1.22474487]]
python 复制代码
#StandarScaler()方法数据标准化示例。
import numpy as np
from sklearn import preprocessing
X = np.array([[2.,-1.,2.],[ 2.,0.,0.],[0.,1.,-2.]])
#求得训练集X的均值,方差,最大值,最小值等固有属性
scaler = preprocessing.StandardScaler().fit(X) 
#在fit的基础上,进行标准化,降维,归一化等操作
xs=scaler.transform(X) 
print("标准化前的数据:\n",X)
print("标准化后的数据:\n",xs)
复制代码
标准化前的数据:
 [[ 2. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -2.]]
标准化后的数据:
 [[ 0.70710678 -1.22474487  1.22474487]
 [ 0.70710678  0.          0.        ]
 [-1.41421356  1.22474487 -1.22474487]]

2. 极差标准化方法

极差标准化也称为区间缩放法或称0-1标准化,它是对原始数据所做的一种线性变换,将原始数据映射到[0,1]区间。常用形式为:
y i j = x i j − m i n { x i j } m a x { x i j } − m i n { x i j } y_{ij}=\frac{x_{ij}-min\{x_{ij}\}}{max\{x_{ij}\}-min\{x_{ij}\}} yij=max{xij}−min{xij}xij−min{xij}

其中 m i n { x i j } min\{x_{ij}\} min{xij}和 m a x { x i j } max\{x_{ij}\} max{xij}指的是和 x i j x_{ij} xij同一数据集的最小值和最大值。极差标准化的方法有自定义和 MaxMinScaler() 等方法.

python 复制代码
#极差标准化自定义方法示例。
def my_scale(data):
    data = (data-data.min())/(data.max()-data.min())
    return data
import numpy as np
X = np.array([[2.,-1.,2.],[ 2.,0.,0.],[0.,1.,-2.]])
xs=my_scale(X)
print("标准化前的数据:\n",X)
print("标准化后的数据:\n",xs)
复制代码
标准化前的数据:
 [[ 2. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -2.]]
标准化后的数据:
 [[1.   0.25 1.  ]
 [1.   0.5  0.5 ]
 [0.5  0.75 0.  ]]
python 复制代码
# MinMaxScaler()方法数据标准化示例。
import numpy as np
from sklearn import preprocessing
X = np.array([[2.,-1.,2.],[ 2.,0.,0.],[0.,1.,-2.]])
minmaxsacler = preprocessing.MinMaxScaler()
minmaxsacler.fit(X)
xs=minmaxsacler.transform(X) 
print("标准化前的数据:\n",X)
print("标准化后的数据:\n",xs)
复制代码
标准化前的数据:
 [[ 2. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -2.]]
标准化后的数据:
 [[1.  0.  1. ]
 [1.  0.5 0.5]
 [0.  1.  0. ]]

3. 最大绝对值标准化方法

最大绝对值标准化方法是 x i j x_{ij} xij除以其最大的绝对值,也就是将原始数据映射到[-1,1]区间内。常用形式为:
y i j = x i j m a x { ∣ x i j ∣ } y_{ij}=\frac{x_{ij}}{max\{|x_{ij}|\}} yij=max{∣xij∣}xij

python 复制代码
# 使用MaxAbsScaler()方法进行数据标准化示例。
import numpy as np
from sklearn import preprocessing
X1 = np.array([[2.,-1.,2.],[ 2.,0.,0.],[0.,1.,-2.]])
abssacler = preprocessing.MaxAbsScaler()
abssacler.fit(X1)
xs=abssacler.transform(X) 
print("标准化前的数据:\n",X)
print("标准化后的数据:\n",xs)
复制代码
标准化前的数据:
 [[ 2. -1.  2.]
 [ 2.  0.  0.]
 [ 0.  1. -2.]]
标准化后的数据:
 [[ 1. -1.  1.]
 [ 1.  0.  0.]
 [ 0.  1. -1.]]
相关推荐
爱喝喜茶爱吃烤冷面的小黑黑7 分钟前
小黑一层层削苹果皮式大模型应用探索:langchain中智能体思考和执行工具的demo
python·langchain·代理模式
香蕉炒肉11 分钟前
Java优化:双重for循环
java·开发语言
傍晚冰川29 分钟前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
PingdiGuo_guo31 分钟前
C++智能指针的知识!
开发语言·c++
黄雪超31 分钟前
JVM——打开JVM后门的钥匙:反射机制
java·开发语言·jvm
我命由我123451 小时前
Spring Boot 项目集成 Redis 问题:RedisTemplate 多余空格问题
java·开发语言·spring boot·redis·后端·java-ee·intellij-idea
Rocky4011 小时前
JAVAEE->多线程:锁策略
java·开发语言·jvm
Jay Kay1 小时前
ReLU 新生:从死亡困境到强势回归
人工智能·数据挖掘·回归
Blossom.1181 小时前
使用Python和Flask构建简单的机器学习API
人工智能·python·深度学习·目标检测·机器学习·数据挖掘·flask
生信学术纵览1 小时前
中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点
数据挖掘·数据分析