详解 Scikit-learn 的 preprocessing.MinMaxScaler函数:数据归一化

  • Post category:Python

Scikit-learn 的sklearn.preprocessing.MinMaxScaler 函数

在机器学习中,常常需要对数据进行归一化处理,常见的归一化方式是将数据缩放到[0, 1]的范围内。在 Scikit-learn 中,我们可以使用sklearn.preprocessing.MinMaxScaler 函数来进行数据的归一化处理。

sklearn.preprocessing.MinMaxScaler 函数是 Scikit-learn 中的一个预处理模块,它能够将原始数据缩放到指定的范围内。MinMaxScaler 函数是一种简单的线性函数方法,能够保留大部分的原始数据,同时将数据缩放到[0, 1]之间。

下面我们来介绍一下 sklearn.preprocessing.MinMaxScaler 函数的使用方法:

使用方法

首先需要导入需要使用的库:

from sklearn.preprocessing import MinMaxScaler

MinMaxScaler 函数的使用非常简单,只需要调用函数并设置需要缩放的数据范围即可。使用步骤如下:

  1. 创建一个 MinMaxScaler 对象
trans = MinMaxScaler(feature_range=(0, 1))

在创建对象时,可以设置需要缩放到的范围,默认范围是[0, 1]。

  1. 使用 MinMaxScaler 对象的 fit_transform() 方法进行归一化处理
data_scaled = trans.fit_transform(data)

在 fit_transform() 方法中传入需要进行归一化处理的数据,即可完成数据的归一化处理。

示例

下面我们提供两个具体的示例,让大家了解如何使用 MinMaxScaler 函数。

示例一

我们有一个包含5个数的数组,我们希望将这个数组进行归一化处理。

import numpy as np
from sklearn.preprocessing import MinMaxScaler

data = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)

# 创建 MinMaxScaler 对象
trans = MinMaxScaler(feature_range=(0, 1))

# 使用 fit_transform() 方法进行归一化处理
data_scaled = trans.fit_transform(data)

# 打印归一化后的数据
print(data_scaled)

运行结果如下:

array([[0.        ],
       [0.25      ],
       [0.5       ],
       [0.75      ],
       [1.        ]])

示例二

我们有一个包含多个特征的数据集,我们希望将其中的一个特征进行归一化处理。

import numpy as np
from sklearn.preprocessing import MinMaxScaler

data = np.array([[1, 2, 3, 4],
                 [2, 3, 4, 5],
                 [3, 4, 5, 6],
                 [4, 5, 6, 7]])

# 创建 MinMaxScaler 对象
trans = MinMaxScaler()

# 使用 fit_transform() 方法进行归一化处理
data[:, 1] = trans.fit_transform(data[:, 1].reshape(-1, 1)).flatten()

# 打印归一化后的数据
print(data)

运行结果如下:

array([[1.        , 0.        , 3.        , 4.        ],
       [2.        , 0.33333333, 4.        , 5.        ],
       [3.        , 0.66666667, 5.        , 6.        ],
       [4.        , 1.        , 6.        , 7.        ]])

以上就是 sklearn.preprocessing.MinMaxScaler 函数的用法,使用该函数可以方便地对数据进行归一化处理。