数据预处理中的数据正向化,标准化和归一化

数据的预处理是一个重要的步骤,而正向化、标准化和归一化是常用的预处理方法。

1. 数据正向化

定义: 数据正向化是将数据转化为对模型有利的正面方向。这通常在评价体系中使用,比如当某一指标数值越大表示越好时,称之为“正向指标”;而当数值越小表示越好时,称之为“反向指标”。为了统一处理,反向指标需要进行正向化。

方法: 一般来说,反向指标的正向化可以通过以下方式实现

方法: 一般来说,反向指标的正向化可以通过以下方式实现:
𝑌正向化=最大值+最小值−y

y是反向指标的原始值。

应用场景: 当你的模型需要处理多个不同方向的指标时,正向化可以统一指标的方向,使得模型更好地进行比较和优化。

2. 数据标准化

定义: 数据标准化是指将不同单位或量级的数据转换到一个统一的尺度,通常是通过调整数据的均值为0,标准差为1的标准正态分布。

方法: 标准化通常采用以下公式:Z=x-u/\sigma

X是原始数据,u是数据的均值,σ是数据的标准差。

应用场景: 当你的数据存在不同的量纲或者不同特征的数据分布差异很大时,标准化有助于消除这些影响,使得模型更稳定有效,特别是在使用机器学习算法(如SVM、K均值、PCA等)时。

3. 数据归一化

定义: 数据归一化是将数据按比例缩放到某个特定的范围,通常是[0, 1]或[-1, 1]。

方法: 归一化的一般公式如下: X归一化​=X-min/max-min

其中X是原始数据,最大值和最小值分别是数据集中的最大和最小值。

应用场景: 归一化常用于需要将不同量级的数据转换到同一尺度的场景,尤其是在需要计算距离或相似度的算法中(如K近邻算法)。

假设我们有以下一个包含三个样本的指标数据集:

样本指标A指标B (正向)指标C (反向)
150100300
270150200
390120100

1. 数据正向化代码 

import pandas as pd

# 创建数据集
data = {
    '样本': [1, 2, 3],
    '指标A': [50, 70, 90],
    '指标B': [100, 150, 120],
    '指标C': [300, 200, 100]
}

df = pd.DataFrame(data)

# 指标C正向化
max_C = df['指标C'].max()
min_C = df['指标C'].min()
df['指标C_正向化'] = max_C + min_C - df['指标C']

print("正向化后的数据:")
print(df)

2. 数据标准化代码

标准化处理是将数据调整到均值为0,标准差为1。我们将对指标A进行标准化处理。

# 指标A标准化
mean_A = df['指标A'].mean()
std_A = df['指标A'].std()
df['指标A_标准化'] = (df['指标A'] - mean_A) / std_A

print("\n标准化后的数据:")
print(df)

3. 数据归一化代码

归一化处理是将数据缩放到[0, 1]范围内。我们将对指标B进行归一化处理。

# 指标B归一化
min_B = df['指标B'].min()
max_B = df['指标B'].max()
df['指标B_归一化'] = (df['指标B'] - min_B) / (max_B - min_B)

print("\n归一化后的数据:")
print(df)

运行结果

通过上述代码处理,我们可以得到如下的结果:

正向化后的数据:
   样本  指标A  指标B  指标C  指标C_正向化
0    1   50   100   300    100
1    2   70   150   200    200
2    3   90   120   100    300

标准化后的数据:
   样本  指标A  指标B  指标C  指标C_正向化  指标A_标准化
0    1   50   100   300    100      -1.224745
1    2   70   150   200    200       0.000000
2    3   90   120   100    300       1.224745

归一化后的数据:
   样本  指标A  指标B  指标C  指标C_正向化  指标A_标准化  指标B_归一化
0    1   50   100   300    100      -1.224745   0.000000
1    2   70   150   200    200       0.000000   1.000000
2    3   90   120   100    300       1.224745   0.400000

解释

  • 指标A的标准化 结果是有负值的,这是因为标准化是将数据转化为均值为0的分布,对于小于均值的数据,标准化后会出现负值。
  • 指标B的归一化 结果完全符合预期,所有值都在0到1之间,没有负值。

总结

  • 正向化 是为了解决指标方向性的问题,使所有指标都能在同一方向上进行比较。
  • 标准化 是为了解决数据的量纲问题,使数据转化为均值为0、标准差为1的标准正态分布,便于算法的处理。
  • 归一化 则是为了将数据缩放到特定的范围内,通常用于需要计算距离的算法中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值