Sklearn标准化和归一化方法汇总(2):Min-Max归一化

news2024/11/26 1:26:17

Sklearn中与特征缩放有关的五个函数和类,全部位于sklearn.preprocessing包内。作为一个系列文章,我们将逐一讲解Sklearn中提供的标准化和归一化方法,以下是本系列已发布的文章列表:

  • Sklearn标准化和归一化方法汇总(1):标准化 / 标准差归一化 / Z-Score归一化
  • Sklearn标准化和归一化方法汇总(2):Min-Max归一化

以下是Sklearn中的五种与特征缩放相关的函数和类,我们的研究也是为围绕这些函数和类展开的:

名称方法名类名
标准化 / Z-Score 归一化 / 标准差归一化sklearn.preprocessing.scalesklearn.preprocessing.StandardScaler
Min-Max 归一化sklearn.preprocessing.minmax_scalesklearn.preprocessing.MinMaxScaler
范数归一化sklearn.preprocessing.normalizesklearn.preprocessing.Normalizer
Robust Scaler(无常用别名)sklearn.preprocessing.robust_scalesklearn.preprocessing.RobustScaler
Power Transformer (无常用别名)sklearn.preprocessing.power_transformsklearn.preprocessing.PowerTransformer

关于各种关于标准化和归一化的概念和分类,我们已经在此前一篇文章《标准化和归一化概念澄清与梳理》中做了详细的梳理和澄清,不清楚的读者可以先阅读一下此文。本文我们研究第二种归一化手段:Min-Max归一化。本文地址:https://laurence.blog.csdn.net/article/details/128714596,转载请注明出处!

1. 算法

Min-Max归一化的算法是:先找出数据集通常是一列数据)的最大值和最小值,然后所有元素先减去最小值,再除以最大值和最小值的差,结果就是归一化后的数据了。经Min-Max归一化后,数据集整体将会平移到[0,1]的区间内,数据分布不变。计算公式如下:

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)

2. 示例

在下面的示例中,我们准备了一组身高数据,这组数据符合以170为均值,170*0.15为标准差的正态分布。我们会通过三种方法计算出标准差归一化后的数据,从中我们可以理解Min-Max归一化的计算逻辑并掌握直接进行Min-Max归一的工具方法和类,以下是示例将要演示的3种计算方法:

  1. 根据公式手动计算
  2. 使用sklearn.preprocessing.minmax_scale直接处理
  3. 使用sklearn.preprocessing.MinMaxScaler直接处理

以下是示例代码:

# Min-Max归一化

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import minmax_scale
from sklearn.preprocessing import MinMaxScaler
# author: https://laurence.blog.csdn.net/

%matplotlib inline
np.random.seed(42)
fig, (ax1, ax2, ax3, ax4) = plt.subplots(1, 4, figsize=(12,5))

heights = np.random.normal(loc=170, scale=170*0.15, size=1000)

print("1. 原始数据")
print(f"heights (first 3 elements) = {heights[:3]}")
print(f"heights min = {heights.min()}")
print(f"heights max = {heights.max()}")

ax1.hist(heights, bins=50)
ax1.set_title("raw data")
ax1.annotate(f"σ = {heights.std()}", (0.5, 0.95), xycoords='axes fraction', va='center', ha='center')

print("--------------------------------------------------------------------------------------------------------------")

print("2. 根据公式手动进行Min-Max归一化")
minmax_scaled_heights = (heights - heights.min()) / (heights.max() - heights.min())
print(f"minmax_scaled_heights (first 3 elements) = {minmax_scaled_heights[:3]}")
print(f"minmax_scaled_heights standard deviation = {minmax_scaled_heights.std()}")

ax2.hist(minmax_scaled_heights, bins=50)
ax2.set_title("manually scaled")
ax2.annotate(f"σ = {minmax_scaled_heights.std()}", (0.5, 0.95), xycoords='axes fraction', va='center', ha='center')

print("--------------------------------------------------------------------------------------------------------------")

print("3. 使用minmax_scale函数进行Min-Max归一化")
minmax_scaled_heights = minmax_scale(heights)
print(f"minmax_scaled_heights (first 3 elements) = {minmax_scaled_heights[:3]}")
print(f"minmax_scaled_heights standard deviation = {minmax_scaled_heights.std()}")

ax3.hist(minmax_scaled_heights, bins=50)
ax3.set_title("minmax_scale()")
ax3.annotate(f"σ = {minmax_scaled_heights.std()}", (0.5, 0.95), xycoords='axes fraction', va='center', ha='center')

print("--------------------------------------------------------------------------------------------------------------")

print("4. 使用MinMaxScaler函数进行Min-Max归一化")

# 在交付给Scaler前,需将一维数据转置为二维单列数组,以便适配Scaler接受的二维数组结构和轴向,即:按列进行缩放(axis=0)
# 受上层Transformer接口的约束,所有Scaler均不接受axis参数,默认按列计算,如要不想或不便转换,可以使用scale(axis=)函数进行缩放
heights = heights.reshape(-1,1)

minmax_scaled_heights = MinMaxScaler().fit_transform(heights)
print(f"minmax_scaled_heights (first 3 elements) = {minmax_scaled_heights[:3].tolist()}")
print(f"minmax_scaled_heights standard deviation = {minmax_scaled_heights.std()}")

ax4.hist(minmax_scaled_heights, bins=50)
ax4.set_title("MinMaxScaler")
ax4.annotate(f"σ = {minmax_scaled_heights.std()}", (0.5, 0.95), xycoords='axes fraction', va='center', ha='center')

plt.show()

输出数据:

1. 原始数据
heights (first 3 elements) = [182.6662109  166.47426032 186.51605772]
heights min = 87.34768282823865
heights max = 268.2446530116954
--------------------------------------------------------------------------------------------------------------
2. 根据公式手动进行Min-Max归一化
minmax_scaled_heights (first 3 elements) = [0.52692164 0.4374124  0.54820363]
minmax_scaled_heights standard deviation = 0.13796537483323715
--------------------------------------------------------------------------------------------------------------
3. 使用minmax_scale函数进行Min-Max归一化
minmax_scaled_heights (first 3 elements) = [0.52692164 0.4374124  0.54820363]
minmax_scaled_heights standard deviation = 0.13796537483323718
--------------------------------------------------------------------------------------------------------------
4. 使用MinMaxScaler函数进行Min-Max归一化
minmax_scaled_heights (first 3 elements) = [[0.5269216393004286], [0.43741239785083125], [0.5482036254822695]]
minmax_scaled_heights standard deviation = 0.13796537483323718

输出图表:

在这里插入图片描述

3. 解读

Min-Max归一化是所有特征缩放方法中最简单的,没有必要解读了,只是再提醒一下MinMaxScaler的使用方法:

sklearn.preprocessing包内的Scaler类均不接受一维数组,在将一维数组传给Scaler前,需将其转置为(只有一列的)二维数组;此外,受上层Transformer接口的约束,所有Scaler均不接受axis参数,默认按列计算,如要不想或不便转换,可以使用对应函数进行按行缩放(此类场景并不常见),对应函数有axis参数。

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

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

相关文章

【现代机器人学】学习笔记十:机器人控制

这节的内容主要讲述在关节空间和任务空间中的运动控制中的反馈控制,力控制,运动-力混合控制以及阻抗控制、导纳控制,pid控制等内容。在之前的内容当中,往往不涉及到实际对机器人的操纵,即我们计算出一个结果&#xff0…

【5】KubeSphere部署应用 | MySQL

目录 1、部署的架构 2、KubeSphere几个主要的模块 3、部署MySQL 【1】先创建MySQL的配置文件 【2】创建存储卷 【3】部署有状态服务 【4】查看创建的服务 【5】创建一个服务可以在集群外可以访问 1、部署的架构 2、KubeSphere几个主要的模块 KubeSphere的工作负载相当于k8s里…

算法之常见字符串题目

leedcode344. 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s […

进程学习笔记

进程 定义 一个程序程序在一个数据集合上的动态执行过程 与程序区别 动静,暂时的过程和永久的存在,进程由程序、数据、进程控制块(PCB)组成 特性 动态并发(进程)独立(分页有力支持&#x…

Linux:C/C++文件操作

回忆C语言文件操作 fopen()的使用:   答:打开文件流指针。 param2 “w”,当前没有文件就先创建,再写入。 “r”,只读。 “b”,可与w、b组合。 只写的例子: 只读的例子: 依靠fg…

《Linux性能优化实战》学习笔记 Day01

学习目标 系统优化的旅程上,对操作系统相关的优化是绕不开的,主动出击,将零星的知识体系化。今后遇到问题,能够加入自己的体系树中,即使专栏中没有提到,自己也能够想办法深入。 希望在这次课程后&#xf…

黑马Redis | 基础篇

目录 一、SQL和NoSQL的区别 结构化与非结构化 关联和非关联 查询方式 事务 总结 二、Redis数据类型和命令 1、通用命令 2、数据类型 3、String类型 String的常见命令 Key结构 4、Hash类型 常见命令 5、List类型 6、Set类型 Set的常见命令 7、SortedSet类型 …

科研快报|PacBio全长扩增子测序破解蚊子肠道微生态与耐药性差异

论文题目:Differences in the intestinal microbiota between insecticide-resistant and -sensitive Aedes albopictus based on full-length 16S rRNA sequencing.期刊:Microbiologyopen影响因子:3.139发表时间:2021年1月研究背…

一个非常好用的中奖概率控制器

本文首发于微信公众号: 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。嗨!大家好,我是小蚂蚁。今天分享一个非常好用的概率控制器,可以用于游戏中两种行为出现的概率控制。这个…

PHP MySQL 插入数据

使用 MySQLi 和 PDO 向 MySQL 插入数据 在创建完数据库和表后,我们可以向表中添加数据。 以下为一些语法规则: PHP 中 SQL 查询语句必须使用引号在 SQL 查询语句中的字符串值必须加引号数值的值不需要引号NULL 值不需要引号 INSERT INTO 语句通常用于…

《Linux Shell脚本攻略》学习笔记-第十三章

13.1 简介 现代Linux应用可以部署在专门的硬件、容器、虚拟机或是云端。 容器的缺点在于它以来于主机的系统内核。 虚拟机的防在于要占用大量的磁盘空间。 如果你想同时运行多个虚拟机,必须要有足够的内存来支撑各个虚拟机。否则,主机就不得不开始交换页…

SLS:基于 OTel 的移动端全链路 Trace 建设思考和实践

作者:高玉龙 (元泊)首先,我们了解一下移动端全链路 Trace 的背景:从移动端的视角来看,一个 App 产品从概念产生,到最终的成熟稳定,产品研发过程中涉及到的研发人员、工程中的代码行数、工程架构规模、产品发…

探索VGG网络与LeNet网络对精度的影响

1 问题在学习不同网络模型对实验精度的影响过程中,对我们的实验结果,各种参数数值的改变有何变化,有何不同。VGG-11网络与LeNet-5网络对精度和损失的影响研究。训练周期20其他参数都相同的方式来探索最终的精度。2 方法对于VGG-11网络&#x…

QTreeWidget 设置任意行背景色

设置任意某行,网上这类示例少,一般都是选中行、交替行、高亮行等设置。 比如我要将顶层节点的背景色修改一下。 方法1,先继承QTreeWidget,更改它的 drawBranches函数,在里面添加条件判断,然后根据需要设置颜色。 #i…

【计算机体系结构-01】指令集体系结构、微体系结构简介

1. “虚拟” to “现实” 首先可以看这张图片,下面的 Physics 所指的是我们的物理世界中看得见摸得到或者是客观存在的事物,而人类希望将自己的工作内容或者需求以某种方式映射到物理层面上,用物理变化带来的影响来完成人类工作内容。例如早期…

Python【r e】模块正则表达式[中]实战

正则表达式相关函数和符号用法:#正则表达式""".匹配任意某个字符[.]与转义字符的作用一致,表示匹配.,配合 ,[.],即匹配一次或则多次. text . 或则 text ...2.从头匹配或者从左往右匹配re.match()"""import …

IDEA整合Docker,一键打包服务镜像与启动容器

尝试了IDEA整合Docker,坑有些多,但经过查阅资料都一一解决了,写了个案例,感觉这种方式确实要方便很多。下面来整理下步骤: 一、安装Docker 准备一台Linux,我这里用的是centos 7 mini 版,然后安…

内网穿透的概念及解决方案

1.什么是内网穿透 在外网的web请求可以转发到内网的本地服务 2.什么是内网?什么是外网? 内网(也叫局域网(Local Area Network,LAN))是在一个局部的地理范围内,一般可以是是几米内(比如家庭内网),也可以是方圆几千米…

2023 年 10 大最佳 GIS 软件

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 GIS 是一个分析地理相关性…

【算法】拓扑排序

目录1.概述2.代码实现3.应用本文参考&#xff1a; LABULADONG 的算法网站 1.概述 &#xff08;1&#xff09;拓扑排序 (Topological Sort) 是指将有向无环图 G (V, E) 中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点 u 和 v&#xff0c;若边<u, v> ∈ E(…