【机器学习】数据预处理之数据归一化

数据预处理之数据归一化

  • 一、摘要
  • 二、数据归一化概念
  • 三、数据归一化实现方法
    • 3.1 最值归一化方法
    • 3.2 均值方差归一化方法

一、摘要

本文主要讲述了数据归一化(Feature Scaling)的重要性及其方法。首先通过肿瘤大小和发现时间的例子,说明了不同量纲特征在距离计算中可能导致偏差,从而引出数据归一化的必要性。接着,介绍了最值归一化(Normalization)的概念和方法,即将数据映射到0-1之间的尺度,并指出其适用于分布有明显边界的情况。最后,还指出了最值归一化的一个缺点,即受异常值影响较大。

二、数据归一化概念

  1. 归一化是指一种简化计算的方式,将数据经过处理之后限定到一定的范围之内,一般都会将数据限定在[0,1]。数据归一化可以加快算法的收敛速度,而且在后续的数据处理上也会比较方便。
  2. 数据归一化的重要性
    1. 数据归一化是机器学习中非常重要的一步,也称为特征缩放
    2. 归一化的目的是使数据在不同特征之间具有相同的尺度,以便更好地进行分类或其他机器学习任务。
  3. 另外,归一化算法是一种去量纲的行为,关于量纲对于计算的影响可以举这样一个例子:使用肿瘤大小(厘米)和发现时间(天)作为特征进行分类。
    在这里插入图片描述
    未归一化时,距离计算主要受发现时间影响,因为时间单位的差异导致数据尺度不同。通过调整时间单位为年,可以使得距离计算更准确地反映肿瘤大小的重要性。归一化的作用就是去除这样的量纲给计算带来的影响。

三、数据归一化实现方法

3.1 最值归一化方法

  1. 最值归一化将数据映射到0到1之间。
  2. 方法:对每个特征求最大值和最小值,然后使用公式(x - xmin) / (xmax - xmin)进行转换。
    在这里插入图片描述
  3. 适用于数据分布有明确边界的情况,如考试成绩像素值
  4. 缺点:对异常值敏感,可能影响归一化结果。
  5. 注意事项
    在执行归一化的算法时有一个地方需要注意,因为公式 y=(x-MinValue)/(MaxValueMinValue)的分母是 MaxValue-MinValue,如果某一个字段的最大值和最小值是相同的,会出现分母为零的情况。所以对于字段数据全部相同的情况要加以判断,通常来讲如果当前字段全部相等且为非零数值,就转换为 1 来处理。如果当前字段全部数值都是 0,那就直接保留 0。
  6. 最值归一化的实现
    • 整型向量数据的归一化代码

      import numpy as np
      # 随机生成向量,其中每个向量的数值是0-100,生成100个
      x = np.random.randint(0,100,size=100)
      # 根据最值归一化公式,实现Int类型数据的归一化
      # 实现最值归一化公式,返回结果是一个向量,其中每一个元素的值就处于[0,1]之间
      (x - np.min(x)) / (np.max(x) - np.min(x))
      

      在jupyter中执行结果:
      在这里插入图片描述

    • 浮点型矩阵数据的归一化代码

      # 生成50x2的矩阵,其中数值都在0-100之间
      X = np.random.randint(0,100,(50,2))
      # 将整型的矩阵转成浮点型矩阵
      X = np.array(X,dtype=float)
      # 将X矩阵数据进行最值归一化,由于矩阵的列数是2列,因此分别需要对矩阵的每一列进行最值归一化处理,如有多列,则使用循环即可
      for col in range(0,2):# 对X中每列进行最值归一化X[:,col] = (X[:,col] - np.min(X[:,col])) / (np.max(X[:,col]) - np.min(X[:,col]))
      # 可以将X矩阵归一化之后的数据绘制出来,验证其中每列数值是否处于[0,1]之间
      import matplotlib.pyplot as plt
      plt.scatter(X[:,0],X[:,1])
      plt.show()
      

      执行结果:
      在这里插入图片描述
      此时,可以看出图中横纵坐标的数值处于[0,1]之间,说明X矩阵的数据已经完成了最值归一化。

    • 查看X矩阵中的均值和方差

      # 查看X矩阵方差
      [(np.std(X[:,col])) for col in range(0,2)]
      # 查看X矩阵方差
      [(np.std(X[:,col])) for col in range(0,2)]
      

      执行结果:
      在这里插入图片描述

3.2 均值方差归一化方法

  1. 均值方差归一化将数据转换为均值为0,方差为1的分布。

  2. 方法:用每个特征减去均值,再除以方差。
    在这里插入图片描述
    S为方差,Xmean为均值。

  3. 适用于数据分布没有明确边界的情况,如收入分布。

  4. 优点:不受异常值影响,使数据分布更加合理。

  5. 代码实现过

    • 实现步骤及效果:

      • 生成随机矩阵并进行均值方差归一化。
      • 步骤:求均值和方差,减去均值,再除以方差。
      • 结果矩阵中的元素不保证在0到1之间,但均值为0,方差为1。
    • 编写代码

      X = np.random.randint(0,100,(50,2))
      X = np.array(X,dtype=float)
      # 根据均值方差归一化公式,实现X矩阵的均值方差归一化实现代码
      for col in range(0,2):X[:,col] = (X[:,col] - np.mean(X[:,col])) / np.std(X[:,col])
      # 绘制图像查看效果
      plt.scatter(X[:,0],X[:,1])
      plt.show()
      

      执行效果:
      在这里插入图片描述

    • 查看X矩阵中的均值和方差是否接近或等于0和1:

      • 查看X矩阵的每列数据的均值是否接近或等于0

        # 通过图像查看并不是很直观,因此,我们查看X矩阵的每列数据的均值是否接近或等于0
        [(np.mean(X[:,col])) for col in range(0,2)]
        

        执行结果:
        在这里插入图片描述

        浮点数精度限制:计算机在存储和处理浮点数时存在精度限制。不同编程语言和系统对于浮点数的表示遵循 IEEE 754 标准,常见的单精度浮点数(float)通常有大约 7 位十进制有效数字,双精度浮点数(double)大约有 15 - 16 位十进制有效数字。当一个数的绝对值小于计算机所能表示的最小非零浮点数时,就可能会出现下溢情况,计算机可能会将其当作 0 处理。不过, -1.3322676295501878e - 17 一般不会出现这种情况,大多数计算机环境能正常表示它。
        实际应用场景的误差容忍度:在许多实际的计算和应用中,我们会设定一个误差范围(也称为容差)。如果一个数的绝对值小于这个容差,就可以将其当作 0 处理。例如,在数值计算、物理模拟等领域,为了简化计算或者忽略极小的误差,常常会这么做。以下是 Python 示例代码,演示了如何根据容差判断一个数是否近似为 0:

        num = -1.3322676295501878e-17
        tolerance = 1e-15
        if abs(num) < tolerance:print("在给定容差范围内,该数近似为 0")
        else:print("该数不等于 0")
        

        在这里插入图片描述

      • 查看X矩阵的每列数据的方差是否接近或等于1

        # 通过图像查看并不是很直观,因此,我们查看X矩阵的每列数据的方差是否接近或等于1
        [(np.std(X[:,col])) for col in range(0,2)]
        

        执行结果:
        在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AIGC】语言模型的发展历程:从统计方法到大规模预训练模型的演化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;语言模型的发展历程&#xff1a;从统计方法到大规模预训练模型的演化1 统计语言模型&#xff08;Statistical Language Model, SLM&#xff09;&#xff1a;统…

Java面试题2025-JVM

JVM 1.为什么需要JVM&#xff0c;不要JVM可以吗&#xff1f; 1.JVM可以帮助我们屏蔽底层的操作系统 一次编译&#xff0c;到处运行 2.JVM可以运行Class文件 2.JDK&#xff0c;JRE以及JVM的关系 3.我们的编译器到底干了什么事&#xff1f; 仅仅是将我们的 .java 文件转换成了…

Deepseek的MLA技术原理介绍

DeepSeek的MLA(Multi-head Latent Attention)技术是一种创新的注意力机制,旨在优化Transformer模型的计算效率和内存使用,同时保持模型性能。以下是MLA技术的详细原理和特点: 1. 核心思想 MLA技术通过低秩联合压缩技术,将多个注意力头的键(Key)和值(Value)映射到一…

QML初识

目录 一、关于QML 二、布局定位和锚点 1.布局定位 2.锚点详解 三、数据绑定 1.基本概念 2.绑定方法 3.数据模型绑定 四、附加属性及信号 1.附加属性 2.信号 一、关于QML QML是Qt框架中的一种声明式编程语言&#xff0c;用于描述用户界面的外观和行为&#xff1b;Qu…

java项目之美妆产品进销存管理系统的设计与开发源码(ssm+mysql)

项目简介 美妆产品进销存管理系统的设计与开发实现了以下功能&#xff1a; 美妆产品进销存管理系统的设计与开发的主要使用者分为管理员登录后修改个人的密码。产品分类管理中&#xff0c;对公司内的所有产品分类进行录入&#xff0c;也可以对产品分类进行修改和删除。产品管…

Python(pymysql包)操作MySQL【增删改查】

下载pymysql&#xff1a; pip install pymysql 在MySQL中创建数据库&#xff1a;unicom create database unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci;use unicom; 在unicom中创建数据表&#xff1a;admin create table admin(id int not null primary key auto_i…

HTTP无状态的概念以及对后端服务的设计会产生的影响

HTTP无状态(Statelessness) 是指每个HTTP请求都是独立的,服务器不会记住或依赖于前一个请求的任何信息。每次请求的处理都与其他请求没有直接关系。也就是说,服务器在处理请求时,不会存储关于客户端状态的信息。 一、HTTP无状态的具体含义 ①每个请求独立:每个请求包含了…

操作系统—进程与线程

补充知识 PSW程序状态字寄存器PC程序计数器&#xff1a;存放下一条指令的地址IR指令寄存器&#xff1a;存放当前正在执行的指令通用寄存器&#xff1a;存放其他一些必要信息 进程 进程&#xff1a;进程是进程实体的运行过程&#xff0c;是系统进行资源分配和调度的一个独立单位…

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之上传头像和新增收货地址

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f680;1.上传头像 -持久…

Windows下ollama详细安装指南

文章目录 1、Windows下ollama详细安装指南1.1、ollama介绍1.2、系统要求1.3、下载安装程序1.4、安装步骤1.5、验证安装1.6、环境变量配置1.7、模型选择与安装【deepseek 示例】1.7.1、拉取并运行模型1.7.2、进阶使用技巧 1、Windows下ollama详细安装指南 1.1、ollama介绍 olla…

10vue3实战-----实现登录的基本功能

10vue3实战-----实现登录的基本功能 1.基本页面的搭建2.账号登录的验证规则配置3.点击登录按钮4.表单的校验5.账号的登录逻辑和登录状态保存6.定义IAccount对象类型 1.基本页面的搭建 大概需要搭建成这样子的页面: 具体的搭建界面就不多讲。各个项目都有自己的登录界面&#…

vue3 点击图标从相册选择二维码图片,并使用jsqr解析二维码(含crypto-js加密解密过程)

vue3 点击图标从相册选择二维码图片&#xff0c;并使用jsqr解析二维码&#xff08;含crypto-js加密解密过程&#xff09; 1.安装 jsqr 和 crypto-js npm install -d jsqr npm install crypto-js2.在util目录下新建encryptionHelper.js文件&#xff0c;写加密解密方法。 // e…

支持多种网络数据库格式的自动化转换工具——VisualXML

一、VisualXML软件介绍 对于DBC、ARXML……文件的编辑、修改等繁琐操作&#xff0c;WINDHILL风丘科技开发的总线设计工具——VisualXML&#xff0c;可轻松解决这一问题&#xff0c;提升工作效率。 VisualXML是一个强大且基于Excel表格生成多种网络数据库文件的转换工具&#…

【JVM详解四】执行引擎

一、概述 Java程序运行时&#xff0c;JVM会加载.class字节码文件&#xff0c;但是字节码并不能直接运行在操作系统之上&#xff0c;而JVM中的执行引擎就是负责将字节码转化为对应平台的机器码让CPU运行的组件。 执行引擎是JVM核心的组成部分之一。可以把JVM架构分成三部分&am…

mysql安装starting the server报错

win10家庭版无法启动服务的&#xff0c;先不要退出&#xff0c;返回上一栏&#xff0c;然后通过电脑搜索栏输入服务两个字&#xff0c;在里面找到mysql80&#xff0c;右键属性-登录&#xff0c;登录身份切换为本地系统就行了

萬有的函數關係速成2. 連續和導數

1.討論間斷點類型 定义: 若函数在某点不满足连续的条件,则该点为间断点。 第一类间断点是左右极限都存在的间断点,其中左右极限相等的是可去间断点,不相等的是跳跃间断点; 第二类间断点是左右极限至少有一个不存在的间断点,包括无穷间断点(极限为无穷)和振荡间断点…

【专题】2025年我国机器人产业发展形势展望:人形机器人量产及商业化关键挑战报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p39668 机器人已广泛融入我们生活的方方面面。在工业领域&#xff0c;它们宛如不知疲倦的工匠&#xff0c;精准地完成打磨、焊接等精细工作&#xff0c;极大提升了生产效率和产品质量&#xff1b;在日常生活里&#xff0c;它们是贴心…

用docker在本地用open-webui部署网页版deepseek

前置条件 用Ollama在本地CMD窗口运行deepseek大模型-CSDN博客文章浏览阅读109次&#xff0c;点赞5次&#xff0c;收藏2次。首次运行需要下载deepseek的大模型包&#xff08;大约5GB&#xff0c;根据本地网速的不同在半个小时到几个小时之间下载完成&#xff09; &#xff0c;并…

DeepSeek-R1 云环境搭建部署流程

DeepSeek横空出世&#xff0c;在国际AI圈备受关注&#xff0c;作为个人开发者&#xff0c;AI的应用可以有效地提高个人开发效率。除此之外&#xff0c;DeepSeek的思考过程、思考能力是开放的&#xff0c;这对我们对结果调优有很好的帮助效果。 DeepSeek是一个基于人工智能技术…

x小兔鲜vue.js

LayoutFooter.vue <template><footer class"app_footer"><!-- 联系我们 --><div class"contact"><div class"container"><dl><dt>客户服务</dt><dd><i class"iconfont icon-kef…