如何在 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
请注意,仅对前两列中的值进行归一化。
其他资源
以下教程提供了有关数据标准化的其他信息: