首页 > 解决方案 > Max-Min 归一化范围相关的混淆

问题描述

我正在使用 UCI 机器学习银行数据集进行数据预处理。URL我使用 Max-Min Normalization 方法来规范化数据。

在此处输入图像描述

据我所知,此方法将数据范围重新调整为 [0,1]。

原始数据看起来像

在此处输入图像描述

应用数据标准化后

df.duration = df.duration.apply(lambda v:((v df.duration.min())/df.duration.max()-df.duration.min()))

现在数据看起来像

在此处输入图像描述

在对持续时间列进行标准化后,所有数据都变为负数。但是根据 Max-Min 归一化数据应该在 (0,1) 之间。因此,哪种归一化在这里提供更好的性能?

我很困惑,因为我看了这个视频来获取知识。根据 0,1 之间的视频时长列。然而,当我在我的机器上运行相同的代码时,我得到了一些不同的东西。

标签: pythonpandasnormalizationscaling

解决方案


我认为您需要更改diff = df['balance'].max() - df['duration'].min(). diff = df['balance'].max() - df['balane'].min()您正在diff从不同的变量进行计算。

还要审查实施。根据sklearn,正确的实现是:

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min

放在一起:

# Compute min and max just once

MIN = df['duration'].min()
MAX = df['duration'].max()

# Max Min Scaler function

def MinMaxScaler(X):
    return (X - MIN) / (MAX - MIN)

# Scale the duration variable

df['duration'] = df['duration'].apply(MinMaxScaler)

推荐阅读