归一化数值

1. 为什么要归一化?

样本集合中,表示一个事物有不同的维度{即:属性},每个属性的取值范围不同,导致计算时此属性占用的权重不同。

如:

两个人的属性对比
属性 A-person B-persion
身高 1.75 1.81
年龄 41 26
收入 40000 10000

计算两个人的差异:

diff = (A.身高-B.身高)2 +  (A.年龄-B.年龄)+  (A.收入-B.收入)

= (1.75-1.81)2 +  (41-26)+ (40000-10000)

= 0.0036 + 225 + 900000000

距离 = diff1/2 = 30000.00375

问题来了,看这些属性,发现收入占用的权重太高,身高和年龄占用的权重相对较低,怎么弱化收入占用的权重呢?

我们把身高,年龄和收入这些属性映射到一个单位区间(0,1)中。

图中,根据梯形的特点可以得到如下公式

(1 - 0) / (max - min) = (归一化值 - 0) / (属性值 - min)

所以,归一化值 =  (属性值 - min) / (max - min)

假如3个属性最大和最小值如下:

 
属性 最大值 最小值
身高 1.2 2.1
年龄 101 16
收入 100000 500

经过归一化操作后:

  A-person B-person
身高归一化值
= (1.75-1.2)/(2.1-1.2)

= 0.55 / 0.9

= 0.61


= (1.81-1.2)/(2.1-1.2)

= 0.61 / 0.9

= 0.678

年龄归一化值
= (41-16)/(101-16)

= 25 / 85

= 0.294


= (26-16)/(101-16)

= 20 / 85

= 0.235

收入归一化值
= (40000-500)/(100000-500)

= 39500 / 99500

= 0.397


= (10000-500)/(100000-500)

= 19500 / 99500

= 0.196

使用归一化值计算两个人的差异:

diff = (A.身高归一化值-B.身高归一化值)2 +  (A.年龄归一化值-B.年龄归一化值)+  (A.收入归一化值-B.收入归一化值)

= (0.61-0.678)2 +  (0.294-0.235)+ (0.397-0.196)

= 0.004624 + 0.003481 + 0.040401

计算的值可以看出,3个属性占用的权重在一个数量级上,每个属性都不会独大。

距离 = diff1/2 = 0.2202

时间: 2024-08-11 01:24:04

归一化数值的相关文章

【机器学习算法-python实现】矩阵去噪以及归一化

1.背景 项目需要,打算用python实现矩阵的去噪和归一化.用numpy这些数学库没有找到很理想的函数,所以一怒之下自己用标准库写了一个去噪和归一化的算法,效率有点低,不过还能用,大家如果有需要可以拿去. (1)去噪算法:根据概率论的知识,如果一组数据服从正态分布,我们设均值是n,方差是v,那么对于每个离散数值有百分之九十二以上的概率会在(n-3*v,n+3*v)的区间内.所以这里的去噪功能主要是实现如果超出了区间就将这个值标记为区间所能容忍最大值. (2)归一化:找到输入队列最大值max,最

第二章:k-近邻算法

本章内容k-近邻分类算法从文本文件中解析和导人数据 使用Matplotlib创建扩散图归一化数值 2.1 k-近邻算法概述简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类. 本书讲解的第一个机器学习算法是k 近邻算法(kNN ) , 它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系.输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近

机器学习实战笔记2(k-近邻算法)

1:算法简单描述 给定训练数据样本和标签,对于某测试的一个样本数据,选择距离其最近的k个训练样本,这k个训练样本中所属类别最多的类即为该测试样本的预测标签.简称kNN.通常k是不大于20的整数,这里的距离一般是欧式距离. 2:python代码实现 创建一个kNN.py文件,将核心代码放在里面了. (1)   创建数据 #创造数据集 def createDataSet(): group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) labe

K-近邻算法改进约会网站的配对效果

摘自:<机器学习实战>,用python编写的(需要matplotlib和numpy库) 海伦一直使用在线约会网站寻找合适自己的约会对象.尽管约会网站会推荐不同的人选,但她没有从中找到喜欢的人.经过一番总结,她发现曾交往过三种类型的人: 1.不喜欢的人( 以下简称1 ): 2.魅力一般的人( 以下简称2 ): 3.极具魅力的人(以下简称3 ) 尽管发现了上述规律,但海伦依然无法将约会网站推荐的匹配对象归入恰当的分类.她觉得可以在周一到周五约会哪些魅力一般的人,而周末则更喜欢与那些极具魅力的人为伴

机器学习实战笔记——利用KNN算法改进约会网站的配对效果

一.案例背景 我的朋友海伦一直使用在线约会网站寻找合适自己的约会对象.尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人.经过一番总结,她发现曾交往过三种类型的人: (1)不喜欢的人: (2)魅力一般的人: (3)极具魅力的人: 尽管发现了上述规律,但海伦依然无法将约会网站推荐的匹配对象归入恰当的分类,她觉得可以在周一到周五约会那些魅力一般的人,而周末则更喜欢与那些极具魅力的人为伴.海伦希望我们的分类软件可以更好地帮助她将匹配对象划分到确切的分类中.此外,海伦还收集了一些约会网站未曾记录的数据

2机器学习实践笔记(k-最近邻)

1:算法是简单的叙述说明 由于训练数据样本和标签,为测试数据的示例,从最近的距离k训练样本,此k练样本中所属类别最多的类即为该測试样本的预測标签. 简称kNN.通常k是不大于20的整数,这里的距离通常是欧式距离. 2:python代码实现 创建一个kNN.py文件,将核心代码放在里面了. (1)   创建数据 #创造数据集 def createDataSet(): group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) labels =

机器学习算法( 二、K - 近邻算法)

一.概述 k-近邻算法采用测量不同特征值之间的距离方法进行分类. 工作原理:首先有一个样本数据集合(训练样本集),并且样本数据集合中每条数据都存在标签(分类),即我们知道样本数据中每一条数据与所属分类的对应关系,输入没有标签的数据之后,将新数据的每个特征与样本集的数据对应的特征进行比较(欧式距离运算),然后算出新数据与样本集中特征最相似(最近邻)的数据的分类标签,一般我们选择样本数据集中前k个最相似的数据,然后再从k个数据集中选出出现分类最多的分类作为新数据的分类. 二.优缺点 优点:精度高.对

kmeans与kmeans++的python实现

一.kmeans聚类: 基本方法流程 1.首先随机初始化k个中心点 2.将每个实例分配到与其最近的中心点,开成k个类 3.更新中心点,计算每个类的平均中心点 4.直到中心点不再变化或变化不大或达到迭代次数 优缺点:该方法简单,执行速度较快.但其对于离群点处理不是很好,这是可以去除离群点.kmeans聚类的主要缺点是随机的k个初始中心点的选择不够严谨,因为是随机,所以会导致聚类结果准确度不稳定. 二.kmeans++聚类: kmeans++方法是针对kmeans的主要缺点进行改进,通过在初始中心点

机器学习实战读书笔记(二)k-近邻算法

knn算法: 1.优点:精度高.对异常值不敏感.无数据输入假定 2.缺点:计算复杂度高.空间复杂度高. 3.适用数据范围:数值型和标称型. 一般流程: 1.收集数据 2.准备数据 3.分析数据 4.训练算法:不适用 5.测试算法:计算正确率 6.使用算法:需要输入样本和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理. 2.1.1 导入数据 operator是排序时要用的 from numpy import * import operato