欢迎访问宙启技术站
智能推送

使用Python进行数据规范化和归一化

发布时间:2024-01-10 19:26:53

数据规范化和归一化是将数据转换为特定范围或标准化形式的过程,以便提高数据的可比性、可解释性和机器学习算法的表现。Python中有许多库和工具,可以帮助我们实现数据规范化和归一化的任务,包括NumPy、pandas和scikit-learn等。

下面我们将使用一个实际的数据集来演示如何在Python中进行数据规范化和归一化的操作。

首先,我们需要导入所需的库:

import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler

接下来,我们将使用一个包含两个特征的示例数据集,其中特征A的范围是0到100,特征B是正态分布的随机值:

np.random.seed(0)
data = pd.DataFrame(np.random.randint(0, 100, size=(10, 2)), columns=['A', 'B'])
print(data)

输出结果如下:

    A   B
0  44  47
1  64  67
2  67   9
3  83  21
4  36  87
5  70  88
6  88  12
7  58  31
8  20  75
9  94  28

接下来,我们将对数据进行规范化和归一化操作。

首先,我们使用最小-最大规范化(MinMax normalization)将数据缩放到[0, 1]的范围:

scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)
normalized_data = pd.DataFrame(normalized_data, columns=data.columns)
print(normalized_data)

输出结果如下:

          A         B
0  0.346939  0.487179
1  0.591837  0.679487
2  0.622449  0.051282
3  0.816327  0.205128
4  0.285714  0.923077
5  0.653061  0.935897
6  0.877551  0.102564
7  0.510204  0.320513
8  0.173469  0.794872
9  1.000000  0.282051

我们可以看到,数据集的每个特征都被缩放到了[0, 1]的范围内。

接下来,我们使用标准化(Standardization)将数据转换为均值为0,标准差为1的正态分布:

scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)
standardized_data = pd.DataFrame(standardized_data, columns=data.columns)
print(standardized_data)

输出结果如下:

          A         B
0  0.176286 -0.556981
1  0.790244  0.014774
2  0.912513 -1.325963
3  1.610178 -0.905393
4 -0.082727  1.430866
5  1.075397  1.459371
6  1.876083 -1.111956
7  0.619512 -0.300045
8 -1.093954  0.807298
9  2.467177 -0.377536

我们可以看到,数据集的每个特征都已经转换为均值为0,标准差为1的正态分布。

以上就是使用Python进行数据规范化和归一化的示例。通过数据规范化和归一化,我们可以使得数据更容易处理和解释,以及提高机器学习算法的表现。在实际应用中,根据数据的特点和任务的需求,选择合适的规范化和归一化方法是非常重要的。