Z-Score标准化

一、说明:

Z-Score标准化是数据处理的一种常用方法。通过它能够将不同量级的数据转化为统一量度的Z-Score分值进行比较。提高了数据可比性,削弱了数据解释性。

二、公式:

在这里插入图片描述

1、总体数据的均值(μ)

2、总体数据的标准差(σ)

3、个体的观测值(x)

三、Z-Score的优缺点

优点:
1、简单,容易计算,凭借最简单的数学公式就能够计算出Z-Score并进行比较。

2、Z-Score能够应用于数值型的数据,并且不受数据量级的影响,因为它本身的作用就是消除量级给分析带来的不便。

缺点:
1、首先,估算Z-Score需要总体的平均值与方差,这一值在真实的分析与挖掘中很难得到,大多数情况下是用样本的均值与标准差替代。

2、其次,Z-Score对于数据的分布有一定的要求,正态分布是最有利于Z-Score计算的。

3、最后,Z-Score消除了数据具有的实际意义,A的Z-Score与B的Z-Score与他们各自的分数不再有关系,因此Z-Score的结果只能用于比较数据间的结果,数据的真实意义还需要还原原值。

四、Z-Score标准化python代码实现

import math
def get_average(data):  #求数组平均数
    return sum(data) / len(data)
def get_variance(data):#求数组方差
    average = get_average(data)
    return sum([(x - average) ** 2 for x in data]) / len(data)
def get_standard_deviation(data): #求数组标准差
    variance = get_variance(data)
    return math.sqrt(variance)
def get_z_score(data): #求数组的z-score归一化最后的结果
    avg = get_average(data)
    stan = get_standard_deviation(data)
    scores = [(i-avg)/stan for i in data]
    return scores

五、实际应用Python实现

def get_z_score(df):
    return (df['Duration'] - df['Duration'].mean())/df['Duration'].std()

在这里插入图片描述

### 如何在Python中实现Z-Score标准化 Z-Score标准化是一种常见的数据预处理方法,用于将数据转换为均值为0、标准差为1的标准正态分布。这种方法对于许多机器学习算法尤为重要,因为它可以提高模型的收敛速度和性能。 以下是使用Python中的`scikit-learn`库实现Z-Score标准化的具体方式: #### 使用Scikit-Learn进行Z-Score标准化 `StandardScaler`类是`scikit-learn`库中专门用于执行Z-Score标准化的一个工具。它通过减去特征的均值并除以其标准差来完成这一过程。 ```python from sklearn.preprocessing import StandardScaler import numpy as np # 创建示例数据 data = np.array([[1, 2], [3, 4], [5, 6]]) # 初始化StandardScaler对象 scaler = StandardScaler() # 计算均值和标准差,并应用变换 scaled_data = scaler.fit_transform(data) print(scaled_data) ``` 上述代码片段展示了如何利用`StandardScaler`对二维数组形式的数据进行Z-Score标准化[^1]。 #### 手动实现Z-Score标准化 如果不想依赖外部库,也可以手动计算Z-Score。具体公式如下: \[ Z = \frac{X - \mu}{\sigma} \] 其中 \( X \) 是原始数据点,\( \mu \) 是样本均值,而 \( \sigma \) 则表示样本标准差。 下面是手动生成Z-Score的过程: ```python import numpy as np def manual_z_score_normalization(data): mean = np.mean(data, axis=0) std_dev = np.std(data, axis=0) # 防止除以零的情况发生 z_scores = (data - mean) / (std_dev + 1e-7) return z_scores # 测试函数 data = np.array([[1, 2], [3, 4], [5, 6]]) normalized_data = manual_z_score_normalization(data) print(normalized_data) ``` 此代码实现了不借助任何第三方库的手动Z-Score标准化逻辑。 --- ### 总结 无论是采用`scikit-learn`内置的功能还是自行编写代码,都可以有效地完成Z-Score标准化操作。这两种方法各有优劣:前者简单易用,适合快速开发;后者则有助于理解其背后的数学原理。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值