MinMaxScaling:适用于pandas数据框和NumPy数组的最小-最大缩放

一个用于对 pandas DataFrame 或 NumPy 数组进行最小-最大缩放的函数。

from mlxtend.preprocessing import MinMaxScaling

一种替代Z-score标准化(或标准化)的方法是所谓的最小-最大缩放(通常也被简单称为“归一化”——这通常会导致歧义)。 在这种方法中,数据被缩放到一个固定范围——通常是0到1。 与标准化相比,具有这个有限范围的代价是我们会得到较小的标准差,这可能会抑制异常值的影响。

最小-最大缩放通常通过以下公式进行:

$$X_{sc} = \frac{X - X_{min}}{X_{max} - X_{min}}.$$

一种不受尺度影响的算法家族包括基于树的学习算法。我们以一般的CART决策树算法为例。在不深入讨论信息增益和不纯度度量的情况下,我们可以将决策视为“特征x_i >= some_val吗?”直观上,我们可以看到这个特征的尺度(厘米、华氏度、标准化尺度)实际上并不重要。

一些特征缩放很重要的算法示例包括:

还有很多情况我无法一一列举……我始终建议您考虑算法的工作原理,然后通常能很明显地判断我们是否需要对特征进行缩放。

此外,我们还希望考虑是“标准化”还是“归一化”(在这里指缩放到[0, 1]范围)我们的数据。一些算法假设我们的数据以0为中心。例如,如果我们将一个小型多层感知机的权重初始化为0或以0为中心的小随机值,我们希望同等更新模型权重。 作为一个经验法则,我会说:当有疑问时,标准化数据,这不会有害。

示例 1 - 缩放一个 Pandas 数据框

import pandas as pd

s1 = pd.Series([1, 2, 3, 4, 5, 6], index=(range(6)))
s2 = pd.Series([10, 9, 8, 7, 6, 5], index=(range(6)))
df = pd.DataFrame(s1, columns=['s1'])
df['s2'] = s2
df

s1 s2
0 1 10
1 2 9
2 3 8
3 4 7
4 5 6
5 6 5
from mlxtend.preprocessing import minmax_scaling

minmax_scaling(df, columns=['s1', 's2'])

s1 s2
0 0.0 1.0
1 0.2 0.8
2 0.4 0.6
3 0.6 0.4
4 0.8 0.2
5 1.0 0.0

示例 2 - 缩放一个 NumPy 数组

import numpy as np

X = np.array([[1, 10], [2, 9], [3, 8], 
              [4, 7], [5, 6], [6, 5]])
X

array([[ 1, 10],
       [ 2,  9],
       [ 3,  8],
       [ 4,  7],
       [ 5,  6],
       [ 6,  5]])
from mlxtend.preprocessing import minmax_scaling

minmax_scaling(X, columns=[0, 1])

array([[0. , 1. ],
       [0.2, 0.8],
       [0.4, 0.6],
       [0.6, 0.4],
       [0.8, 0.2],
       [1. , 0. ]])

API

minmax_scaling(array, columns, min_val=0, max_val=1)

Min max scaling of pandas' DataFrames.

Parameters

Returns

Examples

For usage examples, please see https://rasbt.github.io/mlxtend/user_guide/preprocessing/minmax_scaling/