【愚公系列】2023年08月 3D数学-归一化函数


前言

归一化函数是指将一组数据映射到某个特定区间内的函数。常见的归一化函数有最小-最大归一化、z-score归一化、基于平均值的归一化等。其目的是将各种不同规模、不同单位的数据统一在一个相同的区间内进行比较和处理,避免数据的规模和单位对分析结果造成影响。常见的特定区间包括[0,1]、[-1,1]等。

一、归一化函数

1.推导过程

下面以最小-最大归一化为例,推导归一化的过程:

最小-最大归一化将样本数据映射到[0,1]的范围内,具体步骤如下:

  1. 确定样本数据的最大值(max)和最小值(min);
  2. 对于每个数据点x,将其归一化为(x-min)/(max-min)的值;
  3. 得到的结果在[0,1]范围内。

假设有如下的样本数据:

数据编号 数据值
1 3
2 5
3 7
4 9
  1. 确定样本数据的最大值和最小值:

    max = 9

    min = 3

  2. 对于每个数据点x,将其归一化为(x-min)/(max-min)的值:

    数据编号1的归一化结果为(3-3)/(9-3)=0

    数据编号2的归一化结果为(5-3)/(9-3)=0.33

    数据编号3的归一化结果为(7-3)/(9-3)=0.66

    数据编号4的归一化结果为(9-3)/(9-3)=1

  3. 得到的结果在[0,1]范围内,最终的归一化结果如下:

数据编号 数据值 归一化结果
1 3 0
2 5 0.33
3 7 0.66
4 9 1

这样,我们就将不同规模的数据映射到了相同的区间范围内,方便后续的数据处理和分析。

2.应用场景

归一化函数在数据预处理中被广泛应用,以下是一些归一化函数的应用场景:

  1. 特征缩放

在机器学习中,特征缩放是一种预处理技术,它可以将不同的特征放入同一规模的区间内,避免不同特征的取值范围相差过大而对模型的训练和预测造成影响。归一化函数是一种特征缩放的方法,能够将数据缩放到[0,1]或者[-1,1]之间。

  1. 图像处理

在图像处理中,归一化函数常用于将图像的像素值缩放到[0,1]或者[-1,1]之间,以便进行更好的图像处理和分析。

  1. 数据可视化

在数据可视化中,归一化函数可以将不同属性或方向的数据映射到同一规模的区间内,从而使得不同数据之间的比较更加直观和准确。

  1. 数据挖掘

在数据挖掘中,常常需要对原始数据进行预处理,以便更好地进行模型训练和预测。归一化函数能够将数据缩放到同一区间内,避免不同的规模对模型造成干扰。

归一化函数是数据处理中的一种常用技术,能够使得数据更易于处理和分析,对于模型的训练和预测也有很大的作用。

3.案例

假设有一个数据集包含了一个人的年龄、性别、身高、体重四个特征。其中,年龄的范围为18到80,性别仅有男和女两个类别,身高的范围为150厘米到200厘米,体重的范围为50千克到200千克。

如果直接使用这些特征进行机器学习模型的训练,不同特征之间的范围和单位不同,可能会对模型的训练和预测结果造成一定的影响。因此,需要将这些特征进行归一化处理,使它们具有相同的范围和单位,并且避免极端值对模型的影响。

一种常用的归一化函数是Min-Max归一化函数。假设一个特征的取值范围为[a,b],则该特征的Min-Max归一化函数为:

x n o r m = x − a b − a x_{norm} = \frac{x - a}{b - a} xnorm=baxa

其中,x为特征的原始取值, x n o r m x_{norm} xnorm为经过归一化后的取值。该函数将原始值映射到了[0,1]的范围之内。

在这个案例中,可以将年龄、身高和体重这三个特征使用Min-Max归一化函数进行归一化处理,代码如下:

import pandas as pd

data = pd.read_csv('data.csv')  # 读取数据集

# 定义Min-Max归一化函数
def min_max_scaler(x, a, b):
    return (x - a) / (b - a)

# 对年龄、身高和体重进行归一化处理
data['age_norm'] = data['age'].apply(min_max_scaler, args=(18, 80))
data['height_norm'] = data['height'].apply(min_max_scaler, args=(150, 200))
data['weight_norm'] = data['weight'].apply(min_max_scaler, args=(50, 200))

# 查看归一化后的数据集
print(data.head())

输出结果:

   age gender  height  weight  age_norm  height_norm  weight_norm
0   23      M     170      60  0.089552     0.375000     0.111111
1   28      F     165      65  0.149254     0.291667     0.177778
2   33      M     180      75  0.208955     0.541667     0.333333
3   45      F     155      40  0.462687     0.166667     0.000000
4   50      M     190     100  0.537313     0.708333     0.666667

可以看到,经过归一化处理后,年龄、身高和体重的取值范围都被映射到了[0,1]之内,使得这些特征可以同时用于机器学习模型的训练。

二、归一化函数封装

1.归一化方法

常见的归一化方法包括:

  1. Min-Max归一化:将数据线性映射到[0,1]区间内,公式为: X n o r m = X − X m i n X m a x − X m i n X_{norm} = \frac{X-X_{min}}{X_{max}-X_{min}} Xnorm=XmaxXminXXmin

  2. Z-Score归一化:将数据映射到均值为0,标准差为1的正态分布中,公式为: X n o r m = X − μ σ X_{norm} = \frac{X-\mu}{\sigma} Xnorm=σXμ

  3. Decimal Scaling归一化:通过移动小数点的位置将数据线性映射到[-1,1]区间内,公式为: X n o r m = X 1 0 j X_{norm} = \frac{X}{10^j} Xnorm=10jX其中,j为使得所有数据的绝对值均小于1的位数。

  4. Logarithmic归一化:将数据取对数,再进行归一化处理。

需要根据具体情况选择合适的归一化方法。例如,对于离散型数据,一般使用独热编码或二进制编码等方法。

2.Min-Max归一化

归一化(Normalization)是指将输入数据(也称为特征)缩放到相同的范围或比例,以便于机器学习算法更好地学习特征之间的关系。常见的归一化方法包括最小-最大归一化(Min-Max Normalization)和标准化(Standardization)。

下面是一个简单的Javascript函数,用于对数据进行最小-最大归一化处理:

function normalize(data) {
    
    
  var min = Math.min(...data);
  var max = Math.max(...data);
  var result = data.map(function(x) {
    
    
    return (x - min) / (max - min);
  });
  return result;
}

函数接受一个数组作为输入,返回一个经过最小-最大归一化处理后的数组。具体步骤如下:

  1. 使用Math.minMath.max方法计算输入数组的最小值和最大值。
  2. 使用Array.prototype.map方法将数组的每个元素映射到其归一化值。
  3. 计算公式为:归一化值 = (原始值 - 最小值) / (最大值 - 最小值)。

使用示例:

var data = [1, 2, 3, 4, 5];
var normalizedData = normalize(data);
console.log(normalizedData); // [0, 0.25, 0.5, 0.75, 1]

这个函数仅仅是一个最基本的实现,可以根据需要进行修改和扩展。例如,可以添加参数来控制归一化范围。

其他归一化函数如下:

// 归一化函数
function normalized(arr) {
    
    
  let sum = 0;

  for (let i = 0; i < arr.length; i++) {
    
    
    sum += arr[i] * arr[i]
  }

  const middle = Math.sqrt(sum);

  for (let i = 0; i < arr.length; i++) {
    
    
    arr[i] = arr[i] / middle;
  }
}

猜你喜欢

转载自blog.csdn.net/aa2528877987/article/details/132397233