如何在 python 中标准化数据


在统计学和机器学习中,我们经常对变量进行标准化,使值的范围在 0 到 1 之间。

标准化变量的最常见原因是当我们执行某种类型的多变量分析时(即我们想要了解多个预测变量和响应变量之间的关系)并且我们希望每个变量对分析的贡献相同。

当以不同尺度测量变量时,它们对分析的贡献通常并不相同。例如,如果一个变量的值范围为 0 到 100,000,另一个变量的值范围为 0 到 100,则范围较大的变量在分析中将被分配较大的权重。

通过标准化变量,我们可以确保每个变量对分析的贡献相同。

为了标准化0到1之间的值,我们可以使用以下公式:

x范数= ( xi – x最小值) / (x最大值– x最小值)

金子:

  • xnorm数据集中的第 i 个标准化值
  • x i数据集的第 i 个
  • x max :数据集中的最小值
  • x min数据集中的最大值

以下示例展示了如何在 Python 中规范化一个或多个变量。

示例 1:标准化 NumPy 数组

以下代码展示了如何规范化 NumPy 数组中的所有值:

 import numpy as np 

#create NumPy array
data = np. array ([[13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71]])

#normalize all values in array
data_norm = (data - data. min ())/ (data. max () - data. min ())

#view normalized values
data_norm

array([[0. , 0.05172414, 0.10344828, 0.15517241, 0.17241379,
        0.43103448, 0.5862069, 0.74137931, 0.77586207, 0.86206897,
        0.89655172, 0.98275862, 1. ]])

标准化数组中的每个值现在都在 0 和 1 之间。

示例 2:标准化 Pandas DataFrame 中的所有变量

以下代码显示了如何标准化 pandas DataFrame 中的所有变量:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#normalize values in every column
df_norm = (df-df. min ())/ (df. max () - df. min ())

#view normalized DataFrame
df_norm

        points assists rebounds
0 0.764706 0.125 0.857143
1 0.000000 0.375 0.428571
2 0.176471 0.375 0.714286
3 0.117647 0.625 0.142857
4 0.411765 1.000 0.142857
5 0.647059 0.625 0.000000
6 0.764706 0.625 0.571429
7 1.000000 0.000 1.000000

现在每列中的每个值都在 0 和 1 之间。

示例 3:标准化 Pandas DataFrame 中的特定变量

以下代码显示了如何标准化 pandas DataFrame 中的特定变量:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

define columns to normalize
x = df. iloc [:,0:2]

#normalize values in first two columns only
df. iloc [:,0:2] = (xx. min ())/ (x. max () - x. min ())

#view normalized DataFrame
df

	points assists rebounds
0 0.764706 0.125 11
1 0.000000 0.375 8
2 0.176471 0.375 10
3 0.117647 0.625 6
4 0.411765 1.000 6
5 0.647059 0.625 5
6 0.764706 0.625 9
7 1.000000 0.000 12

请注意,仅对前两列中的值进行归一化。

其他资源

以下教程提供了有关数据标准化的其他信息:

如何标准化 0 到 1 之间的数据
如何标准化 0 到 100 之间的数据
标准化或规范化:有什么区别?

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注