首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数值归一化

数值归一化

作者头像
Hsinyan
发布于 2022-06-19 09:49:10
发布于 2022-06-19 09:49:10
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

最值归一化 Normalization

最值归一化是将所有数据映射到0~1之间,适用于分布有明显边界的情况,受outlier影响很大。

最值归一化的公式为

x_{\text {scale}}=\frac{x-x_{\min }}{x_{\max }-x_{\min }}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X = np.random.randint(0,50,size=(50,2))
X = np.array(X,dtype =float)
# 进行最值归一化
X[:,0] = (X[:,0] - np.min(X[:,0])) / (np.max(X[:,0]) - np.min(X[:,0]))
X[:,1] = (X[:,1] - np.min(X[:,1])) / (np.max(X[:,1]) - np.min(X[:,1]))
plt.scatter(X[:,0],X[:,1]);
plt.show()

均值方差归一化 Standardization

对于数据没有明显的边界,或者是数据存在明显极端的数值,可以使用均值方差归一化将所有数据归一到均值为0,方差为1的分布当中,均值方差归一化的公式为

x_{\text {scale}}=\frac{x-x_{\text {mean}}}{s}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X2 = np.random.randint(0,100,size = (50,2))
X2 = np.array(X2,dtype=float)
X2[:,0] = (X2[:,0] - np.mean(X2[:,0])) / np.std(X2[:,0])
X2[:,1] = (X2[:,1] - np.mean(X2[:,1])) / np.std(X2[:,1])
plt.scatter(X2[:,0],X2[:,1])
plt.show()

# 查看数据的均值和方差
np.mean(X2[:,0])
# 1.2434497875801754e-16
np.std(X2[:,0])
# 0.9999999999999998

使用scikit-learn中的Scaler进行归一化

上述操作都是自己手动实现,scikit-learn中也为我们封装好了归一化的函数

使用自带的鸢尾花数据集,对数据进行预处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris.data,iris.target, test_size=0.2, random_state=666)

scikit-learn中的standardScaler

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.preprocessing import StandardScaler
standardScaler = StandardScaler()
standardScaler.fit(X_train)
# StandardScaler(copy=True, with_mean=True, with_std=True)
standardScaler.mean_
# array([5.83416667, 3.08666667, 3.70833333, 1.17      ])
standardScaler.scale_
# array([0.81019502, 0.44327067, 1.76401924, 0.75317107])
X_train = standardScaler.transform(X_train)
X_test_standard = standardScaler.transform(X_test)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
iOS底层原理总结 - 关联对象实现原理
面试题 Category能否添加成员变量?如果可以,如何给Category添加成员变量? 答:不能直接添加成员变量,但是可以通过runtime的方式间接实现添加成员变量的效果。 RunTime为Category动态关联对象 使用RunTime给系统的类添加属性,首先需要了解对象与属性的关系。我们通过之前的学习知道,对象一开始初始化的时候其属性为nil,给属性赋值其实就是让属性指向一块存储内容的内存,使这个对象的属性跟这块内存产生一种关联。 那么如果想动态的添加属性,其实就是动态的产生某种关联就好了。而想要
xx_Cc
2018/06/19
1.4K0
对象、消息、运行期--10:runtime关联对象
在category中的使用 @property添加属性 ,不会生成带下划线的成员变量,也不会有setter和getter方法实现,所以我们通过runtime关联对象的技术为已经存在的类添加“属性”,这样我们只是实现了setter和getter方法,依然不会有带下划线的成员变量
xy_ss
2023/11/22
2280
iOS Category 添加属性实现原理 - 关联对象
typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy) { OBJC_ASSOCIATION_ASSIGN = 0, // 指定一个弱引用相关联的对象 OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, // 指定相关对象的强引用,非原子性 OBJC_ASSOCIATION_COPY_NONATOMIC = 3, // 指定相关的对象被复制,非原子性 OBJC_ASSOCIATION_RETAIN = 01401, // 指定相关对象的强引用,原子性 OBJC_ASSOCIATION_COPY = 01403 // 指定相关的对象被复制,原子性 };
用户1941540
2019/02/15
3.4K0
iOS Category 添加属性实现原理 - 关联对象
iOS runtime探究(四): 从runtiem开始实践Category添加属性与黑魔法method swizzling你要知道的runtime都在这里
你要知道的runtime都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本文主要讲解runtime相关知识,从原理到实践,由于包含内容过多分为以下五篇文章详细讲解,可自行选择需要了解的方向: 从runtime开始: 理解面向对象的类到面向过程的结构体 从runtime开始: 深入理解OC消息转发机制 从runtime开始: 理解OC的属性property 从runtime开始: 实践Category添加属性与黑魔法method sw
WWWWDotPNG
2018/04/10
8600
iOS runtime探究(四): 从runtiem开始实践Category添加属性与黑魔法method swizzling你要知道的runtime都在这里
iOS开发·runtime原理与实践: 关联对象篇(Associated Object)(应用场景:为分类添加“属性”,为UI控件关联事件Block体,为了不重复获得某种数据)
分类(category)与关联对象(Associated Object)作为objective-c的扩展机制的两个特性:分类,可以通过它来扩展方法;Associated Object,可以通过它来扩展属性;
陈满iOS
2018/09/10
3.1K0
iOS开发·runtime原理与实践: 关联对象篇(Associated Object)(应用场景:为分类添加“属性”,为UI控件关联事件Block体,为了不重复获得某种数据)
面试驱动技术 - Category 相关考点
使用 xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc MNPerson+Test.m 函数,生产一个cpp文件,窥探其底层结构(编译状态)
小蠢驴打代码
2019/03/11
6930
面试驱动技术 - Category 相关考点
【iOS】关联对象详解
associatedObject又称关联对象。顾名思义,就是把一个对象关联到另外一个对象身上。使两者能够产生联系。目前我能想到的关联对象的使用场景有如下几点:
VV木公子
2018/06/05
7.8K0
【iOS】关联对象详解
【美团技术团队博客】Dive into Category
本文系学习Objective-C的runtime源码时候整理所成,主要剖析了category在runtime层的实现原理以及和category相关的方方面面,包含了 初入宝地-category简介 连类比事-category和extension 挑灯细览-category真面目 追本溯源-category如何加载 旁枝末叶-category和+load方法 触类旁通-category和方法覆盖 更上一层-category和关联对象 1、初入宝地-category简介 category是Obj
美团技术团队
2018/03/12
9950
【美团技术团队博客】Dive into Category
OC中Runtime浅析
最近了解了一下OC的Runtime,真的是OC中很强大的一个机制,看起来比较底层,但其实可以有很多活用的方式。
Cloudox
2021/11/23
3030
OC中Runtime浅析
iOS通过runtime给分类添加属性
分类Category可以添加方法,但不能直接添加属性,如下,我们创建一个UIImage的Category:
清墨
2019/04/01
9040
iOS通过runtime给分类添加属性
OC基础Category和Extension区别
表现形式上,Category有名称,有自己的.m文件,extension没有名称看起来像个匿名的分类,没有.m文件。 Category也可以没有名称,这样两者在表现上就一样了。
Light413
2020/04/08
1.6K0
iOS面试题:分类和类扩展区别,为啥分类不能添加成员变量,如何给分类添加属性
一、 分类和类扩展区别 1. 分类实现原理 Category编译之后的底层结构是struct category_t,里面存储着分类的对象方法、类方法、属性、协议信息 在程序运行的时候,runtime会将Category的数据,合并到类信息中(类对象、元类对象中) 2. Category和Class Extension的区别是什么? Class Extension在编译的时候,它的数据就已经包含在类信息中 Category是在运行时,才会将数据合并到类信息中 二、 分类为啥不能添加成员变量 先看Categor
猿_人类
2019/08/29
2.7K0
iOS面试题:分类和类扩展区别,为啥分类不能添加成员变量,如何给分类添加属性
一次标签指针(Tagged Pointer)导致的事故
最近遇到一起由objc_setAssociatedObject和objc_getAssociatedObject引发的线上Crash事故,在痛心疾首的同时也觉得很有意思,特此分享。
落影
2020/05/09
1.4K0
一次标签指针(Tagged Pointer)导致的事故
iOS Extension Category Protrol 例子理解
Demo地址:https://github.com/RainManGO/ExtensionCateGoryProtrolDemo
星宇大前端
2019/01/15
4620
Runtime系列(二)--Runtime的使用场景
Runtime 理解介绍的文章非常多,我只想讲讲Runtime 可以用在哪里,而我在项目里哪些地方用到了runtime。多以实际使用过程为主,来介绍runtime的使用。
Haley_Wong
2018/08/22
1.7K1
Runtime系列(二)--Runtime的使用场景
Objective-C Runtime 的一些基本使用
在上一篇文章《Objective-C Runtime详解》中我们探讨了Runtime的基本原理,这篇文章我们将总结一下Runtime的一些基本使用 目录 查询方法 给分类添加属性 更换代码的实现方法 动态添加方法 字典转属性 先创建两个类 ClassA.h #import <Foundation/Foundation.h> @interface ClassA : NSObject { // 公有变量 NSString *_publicVar1; NSString *_publ
BY
2018/05/11
1.3K0
OC - Association 关联对象
默认情况下,由于分类底层结构的限制,不能直接给 Category 添加成员变量,但是可以通过关联对象间接实现 Category 有成员变量的效果。 传送门:OC - Category 和 Extension
师大小海腾
2020/04/16
1.4K0
OC - Association 关联对象
iOS-RunTime,不再只是听说
一. RunTime简介 RunTime简称运行时。OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制。 对于C语言,函数的调用在编译的时候会决定调用哪个函数,如果调用未实现的函数就会报错。 对于OC语言,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。 二. RunTime消息机制 消息机制是运行时里面最重要的机制,OC中任何方法的调用,
xx_Cc
2018/05/10
1.4K0
浅析Associated Object
MelonTeam
2018/01/04
9210
浅析Associated Object
iOS 开发:『Runtime』详解(三)Category 底层原理
Category(分类) 是 Objective-C 2.0 添加的语言特性,主要作用是为已经存在的类添加方法。Category 可以做到在既不子类化,也不侵入一个类的源码的情况下,为原有的类添加新的方法,从而实现扩展一个类或者分离一个类的目的。在日常开发中我们常常使用 Category 为已有的类扩展功能。
程序员充电站
2019/07/25
1K0
iOS 开发:『Runtime』详解(三)Category 底层原理
推荐阅读
相关推荐
iOS底层原理总结 - 关联对象实现原理
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档