机器学习 - 数据缩放



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

数据缩放常用的两种技术:

  • 规范化 - 规范化将特征的值缩放到 0 到 1 之间。这是通过从每个值中减去特征的最小值,然后将其除以特征的范围(最大值和最小值之间的差)来实现的。

  • 标准化 - 标准化将特征的值缩放到均值为 0,标准差为 1。这是通过从每个值中减去特征的均值,然后将其除以标准差来实现的。

示例

在 Python 中,可以使用 sklearn 模块实现数据缩放。sklearn.preprocessing 子模块提供了用于缩放数据的类。以下是在 Python 中使用 StandardScaler 类进行标准化的示例实现:

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。最后,我们打印 DataFrame 来查看缩放前后数据的差异。请注意,我们使用 scaler 对象的 fit_transform() 方法来拟合和转换数据。

输出

执行此代码后,将产生以下输出:

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
广告