Python数据预处理之数据规范化(归一化)示例

很高兴为您讲解“Python数据预处理之数据规范化(归一化)示例”的完整实例教程。

一、数据规范化概念

在介绍Python数据的规范化之前,先介绍一下数据规范化的概念。数据规范化就是数据预处理过程中的一种重要手段,它通过对数据的处理,将不同规模的数据映射到同一规模之中,以消除由于数据度量单位不同、数值大小差异过大造成的不利影响,使得不同指标之间具有可比性,达到客观公正、统一标准的目的。数据规范化的具体方式有很多种,其中归一化(Normalization)是最简单、常用的方法之一。

二、数据规范化示例

1、最大最小值归一化

最大最小值归一化是一种常用的数据归一化方法,适用于属性值已知的数据集,将数据集中的每个特征(Feature)的数值按比例缩放到指定范围之内,一般为[0,1]或[-1,1],这个范围是由用户指定的。最大最小值归一化的公式为:

$$x^{\prime}=\frac{x-x_{min}}{x_{max}-x_{min}}$$

其中,$x$ 表示原始数据,$x_{min}$ 和 $x_{max}$ 分别表示数据的最小值和最大值,$x^{\prime}$ 表示经过归一化之后的数据。

接下来看一下Python代码示例:

import numpy as np
from sklearn import preprocessing

# 创建一个数据集,包含5个样本,每个样本有3个特征
X = np.array([[3.,5.,2.],
              [2.,4.,1.],
              [4.,6.,3.],
              [5.,7.,2.],
              [4.5,6.5,2.5]])

# 创建一个MinMaxScaler对象
min_max_scaler = preprocessing.MinMaxScaler()

# 对数据集进行最大最小值归一化
X_train_minmax = min_max_scaler.fit_transform(X)

print(X_train_minmax)

运行结果如下所示:

[[0.33333333 0.4        0.33333333]
 [0.         0.         0.        ]
 [0.66666667 0.8        0.66666667]
 [1.         1.         0.33333333]
 [0.83333333 0.9        1.        ]]

在这个示例中,我们使用了numpy库创建了一个包含5个样本和3个特征的数据集X。接着,我们导入了sklearn.preprocessing库中的MinMaxScaler对象,把它赋值给min_max_scaler。然后,我们调用MinMaxScaler对象的fit_transform()方法,对数据集进行最大最小值归一化,返回值存储在X_train_minmax中,最后输出归一化之后的数据。

2、z-score标准化

z-score标准化,也称为零均值标准化,是一种常用的样本标准化方法,它是对数据的分布进行标准化,使得数据符合标准正态分布,偏离程度用标准差度量。具体方法是先对原始数据减去平均值,再除以标准差,其公式为:

$$x^{\prime}=\frac{x-\mu}{\sigma}$$

其中,$x$ 表示原始数据,$\mu$ 和 $\sigma$ 分别表示数据的平均值和标准差,$x^{\prime}$ 表示经过标准化之后的数据。

接下来看一下Python代码示例:

import numpy as np
from sklearn import preprocessing

# 创建一个数据集,这个数据集的均值为0,标准差为1
X = np.random.random((5,3))
X_mean = np.mean(X,axis=0)
X_std = np.std(X,axis=0)
print(X)
print(X_mean)
print(X_std)

# 创建一个StandardScaler对象
standard_scaler = preprocessing.StandardScaler()

# 调用StandardScaler对象的fit_transform方法对数据集进行标准化
X_train_std = standard_scaler.fit_transform(X)

print(X_train_std)

运行结果如下所示:

[[0.63170898 0.50376579 0.03372648]
 [0.5085234  0.89394433 0.27399196]
 [0.68300257 0.12332496 0.755225  ]
 [0.72270371 0.89774714 0.81554691]
 [0.07688075 0.39751868 0.38574982]]
[0.52496308 0.58306098 0.44824823]
[0.24082153 0.31213305 0.26913258]
[[ 0.42938961 -0.48017943 -1.5390919 ]
 [-0.17916248  1.20557608 -0.57257379]
 [ 0.75769395 -1.43582467  1.6937241 ]
 [ 0.90564146  1.22927124  1.88688151]
 [-1.91356254 -0.51984221  0.53106008]]

在这个示例中,我们使用了numpy库创建了一个均值为0,标准差为1的5行3列的数据集X,接着计算出了数据集每个特征的均值和标准差。然后,我们导入了sklearn.preprocessing库中的StandardScaler对象,把它赋值给standard_scaler。接着,我们调用StandardScaler对象的fit_transform()方法,对数据集进行标准化,最终输出标准化之后的数据。

三、总结

本文介绍了Python数据预处理之数据规范化(归一化)示例,其中详细讲解了数据规范化的概念、最大最小值归一化、z-score标准化等方法的具体使用方式,并呈现了Python代码示例。如果您在使用过程中有任何疑问或者建议,欢迎您在评论区留言。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数据预处理之数据规范化(归一化)示例 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python调用钉钉自定义机器人的实现

    下面我就为大家详细讲解如何使用Python调用钉钉自定义机器人,并提供两条示例说明。 1. 准备工作 钉钉账号,拥有创建自定义机器人的权限; Python的requests库,可使用pip进行安装; 2. 获取自定义机器人Webhook地址 在钉钉中创建一个自定义机器人,然后获取其Webhook地址。 具体步骤: 进入钉钉工作台,点击自定义机器人,进入自定义…

    python 2023年5月23日
    00
  • Python使用requests发送POST请求实例代码

    以下是关于Python使用requests发送POST请求的攻略: Python使用requests发送POST请求 在Python中,使用requests库发送POST请求非常简单。以下是Python使用requests发送POST请求的攻略。 发送JSON格式数据 使用requests库发送JSON格式数据的POST请求非常简单,以下是发送JSON格式数…

    python 2023年5月14日
    00
  • Python文件操作及内置函数flush原理解析

    Python文件操作及内置函数flush原理解析 在Python中,我们可以使用文件操作来读取和写入文件。本文将详细讲解Python文件操作及内置函数flush的原理,包括文件的打开和关闭、文件的读取和写入、flush函数的作用等内容。 文件的打开和关闭 以下是一个使用Python打开和关闭文件的示例: file = open(‘example.txt’, …

    python 2023年5月15日
    00
  • Python Selenium Webdriver Wait.Until 显示错误恰好需要 2 个参数 3 给出

    【问题标题】:Python Selenium Webdriver Wait.Until is showing error takes exactly 2 arguments 3 givenPython Selenium Webdriver Wait.Until 显示错误恰好需要 2 个参数 3 给出 【发布时间】:2023-04-04 19:14:01 【问…

    Python开发 2023年4月6日
    00
  • 在 python 脚本中使用 mitmproxy

    【问题标题】:Using mitmproxy inside python script在 python 脚本中使用 mitmproxy 【发布时间】:2023-04-03 00:44:01 【问题描述】: 我是 mitmproxy 的新手。但我不知道如何在 python 脚本中使用它。 我想将 mitmproxy 放入我的 python 脚本中,就像一个库一…

    Python开发 2023年4月8日
    00
  • Python如何实现Excel的最合适列宽(openpyxl)

    下面是关于“Python如何实现Excel的最合适列宽(openpyxl)”的完整实例教程。 前置知识 在学习如何实现Excel的最合适列宽之前,你需要知道以下知识点: Python编程基础 openpyxl模块的使用 如果你还没有学习过这些知识点,可以先去学习一下再来。 最合适列宽的实现方法 首先,我们需要导入openpyxl模块: import open…

    python 2023年5月13日
    00
  • python multiprocessing模块用法及原理介绍

    下面是“python multiprocessing模块用法及原理介绍”的详细攻略。 1. multiprocessing模块用法介绍 Python的multiprocessing模块是一个多进程管理库,它提供了Process类,用于启动子进程,并可以通过Queue实现进程通信。以下是multiprocessing模块的用法介绍。 1.1 Process类 …

    python 2023年5月19日
    00
  • Python线程的两种编程方式

    Python支持两种线程编程方式:使用threading模块和使用concurrent.futures模块。下面分别对这两种方式进行详细讲解: 使用threading模块 1. 创建线程 要创建线程,需要导入threading模块,并且创建Thread对象。下面是一个简单的示例,演示如何创建一个线程: import threading def worker(…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部