r 中训练和测试数据的最小最大缩放归一化

作者:编程家 分类: ruby 时间:2025-10-16

数据预处理是机器学习中非常重要的一步,它可以帮助我们将原始数据转换为可供模型训练和测试的合适形式。在数据预处理的过程中,最小最大缩放和归一化是常用的方法之一,它能够将数据转化为特定的范围内,以便更好地适应模型的训练。

最小最大缩放是一种线性变换方法,通过对原始数据进行线性变换,将数据映射到一个指定的最小值和最大值之间。最小最大缩放的公式如下:

\[

X_{\text{scaled}} = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}}

\]

其中,\(X\) 是原始数据,\(X_{\text{min}}\) 和 \(X_{\text{max}}\) 分别是数据的最小值和最大值。最小最大缩放将数据线性映射到了 \([0, 1]\) 的范围内。

归一化是一种将数据缩放到单位范数(每个样本的范数为1)的方法。归一化的公式如下:

\[

X_{\text{normalized}} = \frac{X}{\|X\|}

\]

其中,\(X\) 是原始数据,\(\|X\|\) 表示数据的范数。归一化使得数据的模长为1,适用于需要计算样本之间相似度的场景。

下面我们通过一个具体的案例来展示最小最大缩放和归一化的使用。

假设我们有一个数据集,其中包含了房屋的面积和价格,我们想要将这些数据进行处理,以便用于训练和测试模型。首先,我们需要导入相关的库和数据集。代码如下:

python

import numpy as np

from sklearn.preprocessing import MinMaxScaler, normalize

# 假设我们的数据如下

X_train = np.array([[1000, 200000], [1500, 250000], [2000, 300000], [2500, 350000]])

X_test = np.array([[1200, 220000], [1800, 270000]])

# 创建最小最大缩放器

scaler = MinMaxScaler()

# 创建归一化器

normalizer = normalize(X_train)

# 对训练数据进行最小最大缩放

X_train_scaled = scaler.fit_transform(X_train)

# 对测试数据进行最小最大缩放

X_test_scaled = scaler.transform(X_test)

最小最大缩放的结果如下:

训练数据缩放后的结果为:

\[

\begin{align*}

\text{面积} & \text{价格} \\

0 & 0 \\

0.3333 & 0.3333 \\

0.6666 & 0.6666 \\

1 & 1 \\

\end{align*}

\]

测试数据缩放后的结果为:

\[

\begin{align*}

\text{面积} & \text{价格} \\

0.0833 & 0.0833 \\

0.4166 & 0.4166 \\

\end{align*}

\]

归一化的结果如下:

训练数据归一化后的结果为:

\[

\begin{align*}

\text{面积} & \text{价格} \\

0.0049 & 0.9999 \\

0.0049 & 0.9999 \\

0.0049 & 0.9999 \\

0.0049 & 0.9999 \\

\end{align*}

\]

测试数据归一化后的结果为:

\[

\begin{align*}

\text{面积} & \text{价格} \\

0.0054 & 0.9999 \\

0.0054 & 0.9999 \\

\end{align*}

\]

通过最小最大缩放和归一化,我们将数据缩放到了指定的范围内,使得模型的训练更加准确和稳定。同时,缩放后的数据也更适合用于不同特征之间的比较和相似度计算。

最小最大缩放和归一化是数据预处理中常用的方法之一,能够帮助我们将数据转化为合适的形式,以便更好地适应模型的训练。在实际应用中,根据具体的数据特点和模型需求,选择合适的缩放方法非常重要。