数据挖掘之归一化

归一化(Normalization)的概念

在数据分析和机器学习中,归一化(Normalization)是一个常见的数据预处理技术。归一化的目的是将数据特征缩放到一个共同的尺度上,以便于后续的分析和建模。

归一化也称为最小-最大规范化
公式: x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x' = \frac{x - min(x)}{max(x) - min(x)} x=max(x)min(x)xmin(x)
其中 x ′ x' x 是归一化后的数值, x x x 是原始数值, m i n ( x ) min(x) min(x) m a x ( x ) max(x) max(x) 分别是特征的最小值和最大值
归一化后,数据会被映射到 [0, 1] 区间内
常用于需要限制数据在特定范围内的场景,如图像处理、推荐系统等
举个例子,假设我们有一个特征"年龄",取值范围为 [18, 65]。如果不进行任何转换,该特征在某些算法中可能会主导整个预测结果。而通过标准化或归一化,我们可以将该特征值映射到一个标准的数值范围,从而减少某些特征对模型的过度影响。

为什么需要归一化

。归一化的目的就是将数据映射到 0-1 之间的范围内。

具体来说,归一化的公式是:
在这里插入图片描述

其中:

x ′ x' x 是归一化后的数值
x x x 是原始数值
m i n ( x ) min(x) min(x) 是该特征的最小值
m a x ( x ) max(x) max(x) 是该特征的最大值
通过这个公式,我们可以将原始数据 x x x 从它的原始范围 [ m i n ( x ) , m a x ( x ) ] [min(x), max(x)] [min(x),max(x)] 映射到 [ 0 , 1 ] [0, 1] [0,1] 的标准化范围内。

这种方法有以下优点:

消除特征之间量纲的差异,使得各个特征处于同一量级上。这对一些算法非常重要,比如基于距离度量的算法。
限制数据在 0-1 之间,对于一些算法如神经网络来说非常适合。因为神经网络的激活函数通常定义在 0-1 之间。
增加数值的稳定性,避免某些特征由于量级过大而主导整个模型。

常用的归一化方法

Min-Max归一化(Min-Max Normalization)

也称为线性归一化或最小-最大归一化。
将数据特征缩放到 [0, 1] 区间内。
公式: x_norm = (x - min(x)) / (max(x) - min(x))

import numpy as np

# 假设我们有一个4x3的数据矩阵
X = np.array([[1, 100, 10],
              [2, 200, 20],
              [3, 300, 30],
              [4, 400, 40]])

# Min-Max归一化
X_norm = (X - np.min(X, axis=0)) / (np.max(X, axis=0) - np.min(X, axis=0))
print(X_norm)
# 输出:
# [[0.         0.         0.        ]
#  [0.33333333 0.25       0.25      ]
#  [0.66666667 0.5        0.5       ]
#  [1.         0.75       0.75      ]]

Z-score归一化(Z-score Normalization)

也称为标准化(Standardization)。
将数据特征缩放到均值为0、方差为1的标准正态分布。
公式: x_norm = (x - mean(x)) / std(x)

import numpy as np

# 假设我们有一个4x3的数据矩阵
X = np.array([[1, 100, 10],
              [2, 200, 20],
              [3, 300, 30],
              [4, 400, 40]])

# Z-score归一化
X_norm = (X - np.mean(X, axis=0)) / np.std(X, axis=0)
print(X_norm)
# 输出:
# [[-1.26491106 -1.26491106 -1.26491106]
#  [-0.42163702 -0.42163702 -0.42163702]
#  [0.42163702  0.42163702  0.42163702]
#  [1.26491106  1.26491106  1.26491106]]

小数定标归一化(Decimal Scale Normalization)

将数据特征缩放到 [-1, 1] 区间内。
公式: x_norm = x / 10^j,其中 j 是使得 max(|x_norm|) < 1 的最小整数。

import numpy as np

# 假设我们有一个4x3的数据矩阵
X = np.array([[1, 100, 10],
              [2, 200, 20],
              [3, 300, 30],
              [4, 400, 40]])

# 小数定标归一化
j = int(np.log10(np.max(np.abs(X))))
X_norm = X / (10 ** j)
print(X_norm)
# 输出:
# [[0.01 1.   0.1 ]
#  [0.02 2.   0.2 ]
#  [0.03 3.   0.3 ]
#  [0.04 4.   0.4 ]]

Log归一化(Log Normalization)

对数据进行对数变换,将数据特征转换到对数尺度上。
公式: x_norm = log(1 + x)

import numpy as np

# 假设我们有一个4x3的数据矩阵
X = np.array([[1, 100, 10],
              [2, 200, 20],
              [3, 300, 30],
              [4, 400, 40]])

# Log归一化
X_norm = np.log1p(X)
print(X_norm)
# 输出:
# [[0.         4.60517019 2.30258509]
#  [0.69314718 5.29831939 2.99573227]
#  [1.09861229 5.70378255 3.40119738]
#  [1.38629436 5.99146113 3.6888794 ]]

sigmoid归一化(Sigmoid Normalization)

将数据特征缩放到 (0, 1) 区间内。
公式: x_norm = 1 / (1 + exp(-x))

import numpy as np

# 假设我们有一个4x3的数据矩阵
X = np.array([[1, 100, 10],
              [2, 200, 20],
              [3, 300, 30],
              [4, 400, 40]])

# Sigmoid归一化
X_norm = 1 / (1 + np.exp(-X))
print(X_norm)
# 输出:
# [[0.73105858 0.73105858 0.73105858]
#  [0.88079708 0.88079708 0.88079708]
#  [0.95257413 0.95257413 0.95257413]
#  [0.98201379 0.98201379 0.98201379]]

Softmax归一化(Softmax Normalization)

将数据特征缩放到 (0, 1) 区间内,且所有特征值之和为1。
公式: x_norm = exp(x) / sum(exp(x))

import numpy as np

# 假设我们有一个4x3的数据矩阵
X = np.array([[1, 100, 10],
              [2, 200, 20],
              [3, 300, 30],
              [4, 400, 40]])

# Softmax归一化
X_norm = np.exp(X) / np.sum(np.exp(X), axis=1, keepdims=True)
print(X_norm)
# 输出:
# [[0.01798621 0.73221631 0.25979748]
#  [0.01798621 0.73221631 0.25979748]
#  [0.01798621 0.73221631 0.25979748]
#  [0.01798621 0.73221631 0.25979748]]

常用模块

sklearn.preprocessing

这个模块包含了许多常见的数据预处理方法,其中就包括Min-Max归一化、Z-score归一化等。下面是一个例子:

from sklearn.preprocessing import MinMaxScaler

# 假设我们有一个4x3的数据矩阵
X = [[1, 100, 10], 
     [2, 200, 20],
     [3, 300, 30],
     [4, 400, 40]]

scaler = MinMaxScaler()
X_normalized = scaler.fit_transform(X)
print(X_normalized)
# 输出:
# [[0.         0.         0.        ]
#  [0.33333333 0.25       0.25      ]
#  [0.66666667 0.5        0.5       ]
#  [1.         0.75       0.75      ]]

numpy

NumPy提供了一些基本的归一化函数,比如可以使用(x - x.min()) / (x.max() - x.min())实现Min-Max归一化。下面是一个例子:

import numpy as np

# 假设我们有一个4x3的数据矩阵  
X = np.array([[1, 100, 10], 
              [2, 200, 20],
              [3, 300, 30],
              [4, 400, 40]])

X_normalized = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
print(X_normalized)
# 输出:
# [[0.         0.         0.        ]
#  [0.33333333 0.25       0.25      ]
#  [0.66666667 0.5        0.5       ]
#  [1.         0.75       0.75      ]]

torchvision.transforms

在PyTorch中,torchvision.transforms模块提供了一些常用的数据预处理方法,包括归一化操作。下面是一个例子:

import torch
from torchvision.transforms import Normalize

# 假设我们有一个4x3的数据张量
X = torch.tensor([[1, 100, 10], 
                  [2, 200, 20],
                  [3, 300, 30],
                  [4, 400, 40]])

normalize = Normalize(mean=[0, 0, 0], std=[1, 1, 1])
X_normalized = normalize(X)
print(X_normalized)
# 输出:
# [[-1.         -1.         -1.        ]
#  [-0.33333333 -0.33333333 -0.33333333]
#  [0.33333333  0.33333333  0.33333333]
#  [1.          1.          1.        ]]

应用场景

特征工程

在构建机器学习模型时,将不同量纲的特征进行归一化处理可以提高模型的收敛速度和性能。这是因为归一化能够消除特征之间的量纲差异,使得各个特征对模型训练的贡献更加均衡。

数据预处理

在很多数据分析任务中,原始数据往往具有不同的量纲和分布。进行归一化处理可以将数据映射到一个标准的范围内,有利于后续的统计分析、可视化和模型构建。

异常检测

异常值检测是一个典型的应用场景。通过对数据进行归一化,可以更好地识别出偏离正常范围的异常点,为异常检测提供基础。

聚类算法

很多聚类算法,如K-Means、层次聚类等,都需要事先对数据进行归一化处理,以确保不同特征对聚类结果的影响是均衡的。

推荐系统

在推荐系统中,用户对不同类型商品的评分往往具有不同的尺度。通过对评分数据进行归一化,可以更准确地衡量用户偏好,从而提高推荐的精度。

深度学习

在深度学习模型的训练中,归一化技术也扮演着重要的角色。使用归一化层可以加快模型的收敛速度,并提高模型的泛化性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/652168.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

httpsok-v1.12.0支持LB证书自动部署

&#x1f525;httpsok-v1.12.0支持LB证书自动部署 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具&#xff0c;基于全新的设计理念&#xff0c;专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业&#xff0c;稳定、安全、可靠。 一行命令&#xff0c;一分钟轻松搞…

【Python】 探索Python中的“命名元组”

基本原理 在Python中&#xff0c;元组&#xff08;tuple&#xff09;是一种不可变序列&#xff0c;它允许我们存储一系列的元素&#xff0c;并且这些元素一旦被创建就不能被修改。元组的这种不可变性使得它们在多线程编程中非常安全&#xff0c;因为不需要担心数据被意外修改。…

2024电激世界脉动-中国汽车品牌全球化制胜手册

来源&#xff1a;奥美Ogilvy&#xff1a; 近期历史回顾&#xff1a; 2024中国宏观经济专题报告-数据要素市场建设 2023-2024年度报告.pdf 2024制药与生化医疗技术产业链白皮书.pdf 从可再生能源到绿氢-中国投资助力埃及能源转型.pdf 2024有机旅行中国行业指引.pdf 2024中国技术…

SpringBoot——发送HTML格式的邮件

目录 项目总结 新建一个SpringBoot项目 pom.xml application.properties配置文件 EmailService服务类 SpringbootMailHtmlApplicationTests测试类 项目总结 在SpringBoot项目中发送HTML格式的邮件的思路&#xff1a; 添加依赖&#xff1a;在项目中添加spring-boot-starte…

ROCm上运行网络中的网络(NiN)

7.3. 网络中的网络&#xff08;NiN&#xff09; — 动手学深度学习 2.0.0 documentation (d2l.ai) 代码 import torch from torch import nn from d2l import torch as d2ldef nin_block(in_channels, out_channels, kernel_size, strides, padding):return nn.Sequential(nn.…

B端:ElementUI、AntDesign、若依等看腻了,来点不一样的。

现在对ElementUI、AntDesign和若依这些 UI 框架感到厌倦了&#xff0c;本次给大家分享一些更加个性化的UI界面。

PHP深入理解-PHP架构布局

PHP的架构布局涉及多个层次&#xff0c;让我们一起探讨一下吧&#xff01;&#x1f680; 执行流程&#xff1a;解析为Token&#xff1a;将PHP代码解析成标记&#xff08;tokens&#xff09;。抽象语法树&#xff1a;将语法解析树转换为抽象语法树。Opcodes&#xff1a;将抽象语…

如何保养和维护气膜体育馆—轻空间

随着经济的飞速发展&#xff0c;气膜体育馆以其新颖的外观、优美的造型、节能环保的特点&#xff0c;迅速进入体育市场。然而&#xff0c;对于气膜体育馆的维护和保养是不容忽视的问题&#xff0c;必须引起重视。下面我们将详细介绍气膜体育馆的维护需要从哪些方面着手。 一、保…

后量子密码算法的数学原理

后量子密码算法&#xff0c;作为应对未来量子计算时代挑战的重要技术手段&#xff0c;其研究和应用正在逐步成为信息安全领域的热点。以下是对后量子密码算法的详细阐述&#xff1a; 一、背景与意义 随着量子计算技术的快速发展&#xff0c;传统的公钥密码算法&#xff0c;如RS…

欧科云链:Web3.0时代 具备链上数据分析能力的公司愈发凸显其价值

在当今激烈的市场竞争中&#xff0c;新兴互联网领域迅速崛起&#xff0c;Web2.0已相对成熟&#xff0c;用户创造数据&#xff0c;但不拥有数据。被视为新的价值互联网的Web3.0&#xff0c;赋予用户真正的数据自主权&#xff0c;它的到来被认为是打破Web2.0垄断的机遇。 在Web3…

深入pandas:数据分析

目录 前言 第一点&#xff1a;导入模块 第二点&#xff1a;准备数据 第三点&#xff1a;简单的分析数据 第四点&#xff1a;【重点】数据透支 总结 前言 在数据分析与挖掘的领域&#xff0c;了解如何使用工具和方法来探索数据是至关重要的。本文将探讨如何利用Python中的…

探索RS与AES加密技术:从经典到现代

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、MD5加密技术&#xff1a;经典中的经典 二、非对称加密&#xff1a;RSA技术的魅力 RSA技…

Samtec mPower®电源连接器:高能、可靠、灵活、小巧

【摘要/前言】 电源连接器是互连解决方案中不可或缺的一个组成部分。虽然相较于比较爱“竞速”的信号连接器&#xff0c;电源连接器的技术迭代不是那么频繁&#xff0c;但是它是连接电源和用电设备的重要纽带&#xff0c;想要确保设备正常运行&#xff0c;就少不了它的身影。 …

记录一次安装k8s初始化失败

实例化 kubeadm init --configkubeadm.yaml --ignore-preflight-errorsSystemVerification报错 [init] Using Kubernetes version: v1.25.0 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR CRI]: co…

移动摄像头专网需要解vlan,如何解决

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

最后两天!百度云加速正式停服

百度云加速将于5月30日&#xff0c;正式关闭服务器&#xff0c;仅保留官网首页通知。 届时如网站还在百度云加速接入的&#xff0c;将无法正常访问&#xff01; 如果您还有域名在百度云加速接入的请尽快做迁移安排&#xff0c;以免造成损失。 目前在主机吧购买的域名已经全部…

vulnhub靶场WP Momentum2

目录 靶机安装 IP发现 端口扫描 目录扫描 备份文件扫描 文件上传 查看当前用户 查看所有用户 权限提升 总结 靶机下载地址 : Momentum: 2 ~ VulnHub 靶机安装 打开VMware 导入虚拟机 点击重试&#xff0c;就可以正常导入 右击——设置——修改靶机的网络连接模式是…

【面试干货】选择排序

【面试干货】选择排序 1、实现思想2、代码实现 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、实现思想 选择排序的实现思想是每次从未排序的部分中选择最小的元素&#xff0c;然后将其放到已排序部分的末尾。 具体步骤如下&#xff1…

【VTKExamples::Utilities】第九期 FrameRate

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例FrameRate,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. FrameRate 该样例介绍 如…

Linux-----sed案例练习

1.数据准备 准备数据如下&#xff1a; [rootopenEuler ~]# cat openlab.txt My name is jock. I teach linux. I like play computer game. My qq is 24523452 My website is http://www.xianoupeng.com My website is http://www.xianoupeng.com My website is http://www.…