归一化和标准化(Z-Score)

news2024/11/14 20:22:30

在处理数据过程中,通常会有不同规格的数据,比如年龄的取值范围是0-130,收入的取值范围是0-100000等等,如果不进行归一化或标准化处理,梯度下降每次走过的相对长度就不一样,就导致某个参数很快就找到了最优解,另一个参数还早得很。

归一化(Normalization)

归一化是将数据缩放到固定范围内的过程,最常见的是0到1之间。这种方法尤其适用于参数的尺度相差很大的情况。归一化的原理就是整体缩放数据刀0-1之间,公式是:

x normalized = x − x min x max − x min x_{\text{normalized}} = \frac{x - x_{\text{min}}}{x_{\text{max}} - x_{\text{min}}} xnormalized=xmaxxminxxmin

其中, x x x是原始数据点, x min x_{\text{min}} xmin x max x_{\text{max}} xmax分别是数据集中的最小值和最大值。

归一化适用于不假设数据分布的算法,如K最近邻和神经网络。

标准化(Z-Score Standardization)

标准化涉及到数据的重新缩放,使得它们的均值为0,标准差为1。标准化就是相当于把原来正太分布的数据移动到x=0的位置,让数据中位值和y轴重叠,同时数据集中的值在其均值周围分布的平均距离是1,因为平均距离是1但是大量数据集中在1以内(即-1~1之间)因此1以外的大概会分布到-3~3之间,最终就形成大部分数据在-3~3之间。公式是:

x standardized = x − μ σ x_{\text{standardized}} = \frac{x - \mu}{\sigma} xstandardized=σxμ

其中, μ \mu μ是数据集的均值,而 σ \sigma σ是数据集的标准差。

标准化适用于假设数据为正态分布的算法,如线性回归和逻辑回归。

归一化和标准化的代码实现如下:

import numpy as np
import matplotlib.pyplot as plt

# 生成正态分布的特征X和目标y数据
X = np.random.normal(50, 10, 1000)
y = np.random.normal(30, 5, 1000)

# 归一化y
normalized_y = (y - np.min(y)) / (np.max(y) - np.min(y))

# 标准化y
standardized_y = (y - np.mean(y)) / np.std(y)

# 绘制散点图
plt.figure(figsize=(15, 5))

# 绘制原始数据的散点图
plt.subplot(1, 3, 1)
plt.scatter(X, y, alpha=0.6, color='blue')
plt.title('Original Data Scatter Plot')
plt.xlabel('X')
plt.ylabel('y')

# 绘制归一化后的数据散点图
plt.subplot(1, 3, 2)
plt.scatter(X, normalized_y, alpha=0.6, color='orange')
plt.title('Normalized Data Scatter Plot')
plt.xlabel('X')
plt.ylabel('Normalized y')

# 绘制标准化后的数据散点图
plt.subplot(1, 3, 3)
plt.scatter(X, standardized_y, alpha=0.6, color='green')
plt.title('Standardized Data Scatter Plot')
plt.xlabel('X')
plt.ylabel('Standardized y')

plt.tight_layout()
plt.show()

图像绘制的结果,可以看到y的取值分别进行了归一化和标准化:
在这里插入图片描述
使用了Seaborn库来绘制原始数据、归一化后的数据和标准化后的数据的密度分布(KDE,Kernel Density Estimation)。这些图表显示了数据在不同处理(归一化和标准化)后的分布情况。

在第一个图表(Original Data Distribution)中,您可以看到特征 X X X(蓝色)和目标 y y y(红色)的原始分布情况。
第二个图表(Normalized Data Distribution)展示了将 X X X y y y 归一化后的分布情况。
第三个图表(Standardized Data Distribution)则展示了 X X X y y y标准化后的分布情况。
在这里插入图片描述

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

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

相关文章

Android排队预约系统(Java+SqLite+ZXing)

自己写的排队预约系统,可改写,添加功能,如管理用户,查询排队人数等功能。(由于是选修课课设,所以写的比较粗糙) 使用方法: 1.使用Android studio导入项目。 2.使用gradle加载build.gradle.kts中的依赖。…

DC-6靶场

DC-6靶场下载: https://www.five86.com/downloads/DC-6.zip 下载后解压会有一个DC-3.ova文件,直接在vm虚拟机点击左上角打开-->文件-->选中这个.ova文件就能创建靶场,kali和靶机都调整至NAT模式,即可开始渗透 首先进行主…

MatGPT - 访问 OpenAI™ ChatGPT API 的 MATLAB® 应用程序

系列文章目录 前言 MatGPT 是一款 MATLAB 应用程序,可让您轻松访问 OpenAI 的 ChatGPT API。使用该应用程序,您可以加载特定用例的提示列表,并轻松参与对话。如果您是 ChatGPT 和提示工程方面的新手,MatGPT 不失为一个学习的好方…

模拟信号和数字信号的区别

模拟和数字信号是携带信息的信号类型。两种信号之间的主要区别在于模拟信号具有连续电信号,而数字信号具有非连续电信号。 模拟信号和数字信号之间的差异可以通过不同类型波的例子来观察。 什么是模拟信号(Analog Signals)? 许多系统使用模拟信号来传输…

跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

在裸机系统中,系统的主体就是 C P U CPU CPU按照预先设定的程序逻辑在 m a i n main main函数里面顺序执行的无限循环。在多任务系统中,根据功能的不同,把整个系统分割成一个个独立的,无限循环且不能返回的的函数,这个…

【C++题目速刷】二分查找

【C题目速刷】二分查找 一、二分查找1、题目链接2、解题3、代码 二、在排序数组中查找元素的第一个和最后一个位置1、题目链接2、解题3、代码4、算法模板 三、x的平方根1、解题链接2、解题3、代码 四、搜索插入位置1、题目链接2、解题3、代码 五、山脉数组的峰顶索引1、题目链接…

Python新闻文本分类系统的设计与实现:基于Flask、贝叶斯算法的B/S架构

Python新闻文本分类系统的设计与实现:基于Flask、贝叶斯算法的B/S架构 引言数据获取与处理数据分析与可视化文本分类模型结论 引言 在信息爆炸的时代,新闻数据的快速获取和准确分类变得尤为重要。本文将介绍一种基于Python语言、Flask技术、B/S架构以及…

智能优化算法应用:基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.野狗算法4.实验参数设定5.算法结果6.参考文献7.MA…

msvcp120.dll丢失的多种详细有效解决方法

在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是“msvcp120.dll丢失”。那么,msvcp120.dll到底是什么?为什么会出现丢失的情况?丢失后会对电脑产生什么影响?本文将为您详细解答这些问题&#…

【汇编先导】-- 2

汇编先导 6. 寄存器 存储数据:CPU > 内存 > 硬盘(固态、机械) CPU还可分为: 32位CPU 8 16 32 64位CPU 8 16 32 64(增加了寻址能力) 通用寄存器 # 32位的通用寄存器只有8个 # 可以在任意软件的底层看到 # 通用寄存器可以存储任何值存值的范围…

【动态规划】08路径问题_下降路径最小和_C++(medium)

题目链接:leetcode下降路径最小和 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求通过 matrix 的下降路径 的 最小和 由题可得: 在下一行选择的元…

【职言】三年功能测试,一些测试工作的“吐槽”

以下为作者观点: 概述 作为功能测试,我也分享下日常工作中功能测试值得吐槽的问题,由于工作时间不长且未进过大厂,不了解大公司的工作模式和流程,所以自己的方法和理解都是基于中小公司的工作经验总结,应…

【Linux】Linux基础命令

写在前面: 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事…

flask 之上传与下载

from flask import Flask, render_template, request, send_from_directory, redirect, url_for import osapp Flask(__name__)# 上传文件存储路径 UPLOAD_FOLDER uploads app.config[UPLOAD_FOLDER] UPLOAD_FOLDERapp.route(/) def index():# 确保上传文件夹存在if not os.…

小程序中实现长按二维码图片识别

本文使用小程序提供的imae组件实现二维码的识别,在小程序官方文档中给出了该组件一个用于识别图片的属性show-menu-by-longpress。 属性说明:长按图片显示发送给朋友、收藏、保存图片、搜一搜、打开名片/前往群聊/打开小程序(若图片中包含对应…

Ubuntu-20.04.2 mate 上安装、配置、测试 qtcreator

一、从repo中安装 Ubuntu-20.04.2的repo中,qtcreator安装包挺全乎的,敲完 sudo apt install qtcreator 看一下同时安装和新软件包将被安装列表,压缩包252MB,解压安装后933MB,集大成的一包。 sudo apt install qtcrea…

【从服务器获取共享列表失败】【无法与设备或资源通信】解决方案!

【从服务器获取共享列表失败】背景: 某项目搭建有samba共享,使用一段时间后,不知何种原因,客户端链接共享时报:从服务器获取共享列表失败,无效的参数。 可参考解决方案A: 银河麒麟samba共享文…

【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 快慢指针 移动零 class…

分段函数1_分支结构 C语言xdoj112

题目描述: 编写程序计算分段函数f(x)的值。 输入格式&#xff1a;输入实数x的值 输出格式&#xff1a;输出f(x)的值&#xff0c;结果保留两位小数。 示例&#xff1a; 输入&#xff1a;4 输出&#xff1a;2.00 #include <stdio.h> #include <math.h>//分段函数1_分…

如何入门 GPT 并快速跟上当前的大语言模型 LLM 进展?

入门GPT 首先说第一个问题&#xff1a;如何入门GPT模型&#xff1f; 最直接的方式当然是去阅读官方的论文。GPT模型从2018年的GPT-1到现在的GPT-4已经迭代了好几个版本&#xff0c;通过官方团队发表的论文是最能准确理清其发展脉络的途径&#xff0c;其中包括GPT模型本身和一…