Machine Learning 简明教程

Machine Learning - Data Scaling

数据缩放是机器学习中用于对数据中的特征范围或分布进行归一化或标准化的预处理技术。数据缩放至关重要,因为数据中的不同特征可能具有不同的范围,并且某些算法可能无法很好地处理此类数据。通过缩放数据,我们可以确保每个特征具有相似的范围和量程,从而可以提高机器学习模型的性能。

用于数据缩放的两种常用技术为 -

  1. Normalization − 标准化将特征值缩放至 0 到 1 之间。通过从每个值中减去此特征的最小值并将其除以特征范围(最大值和最小值之间的差值),可实现这一目的。

  2. Standardization - 标准化将特征的值按均值 0 和标准差 1 进行缩放。通过从每个值减去特征的均值并除以标准差来实现这一点。

Example

在 Python 中,可以使用 sklearn 模块实现数据缩放。sklearn.preprocessing 子模块提供用于缩放数据的类。下面是使用 StandardScaler 类在 Python 中实现数据缩放的示例实现 −

from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
import pandas as pd

# Load the iris dataset
data = load_iris()
X = data.data
y = data.target

# Create a DataFrame from the dataset
df = pd.DataFrame(X, columns=data.feature_names)
print("Before scaling:")
print(df.head())

# Scale the data using StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Create a new DataFrame from the scaled data
df_scaled = pd.DataFrame(X_scaled, columns=data.feature_names)
print("After scaling:")
print(df_scaled.head())

在此示例中,我们加载 iris 数据集并从中创建一个 DataFrame。然后,我们使用 StandardScaler 类对数据进行缩放,并从缩放后的数据创建一个新的 DataFrame。最后,我们打印数据框以查看缩放前后的数据差异。请注意,我们使用缩放器对象的 fit_transform() 方法对数据进行拟合和转换。

Output

执行此代码时,将生成以下输出 −

Before scaling:
   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
0    5.1                3.5                1.4               0.2
1    4.9                3.0                1.4               0.2
2    4.7                3.2                1.3               0.2
3    4.6                3.1                1.5               0.2
4    5.0                3.6                1.4               0.2
After scaling:
   sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
0   -0.900681            1.019004        -1.340227           -1.315444
1   -1.143017            -0.131979       -1.340227           -1.315444
2   -1.385353            0.328414        -1.397064           -1.315444
3   -1.506521            0.098217        -1.283389           -1.315444
4   -1.021849            1.249201        -1.340227           -1.315444