详解 Scikit-learn 的 preprocessing.MaxAbsScaler函数:数据归一化

  • Post category:Python

sklearn.preprocessing.MaxAbsScaler是Scikit-learn中用于数据标准化的函数之一,其作用是将训练集的每个特征缩放至[-1,1]之间,对测试集进行同样的缩放操作。该函数常用于以线性模型(例如:Logistic回归、SVM等)为基础的算法中。

该函数的使用方法可以概括为以下4步:
1. 实例化MaxAbsScaler。
2. 使用fit方法拟合训练数据。
3. 使用transform方法对训练集和测试集数据进行缩放操作。
4. 使用缩放后的数据进行训练(不进行拟合操作)。

以下是两个使用缩放的实例:

第一个实例(仅使用训练集):

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MaxAbsScaler
from sklearn.linear_model import LogisticRegression

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)

# 实例化 MaxAbsScaler
scaler = MaxAbsScaler()

# 对训练集进行拟合和变换
X_train_scaled = scaler.fit_transform(X_train)

# 使用线性回归模型进行拟合
clf = LogisticRegression(random_state=0).fit(X_train_scaled, y_train)

# 对测试集进行变换
X_test_scaled = scaler.transform(X_test)

# 预测结果
predictions = clf.predict(X_test_scaled)

在上面的代码中,我们使用 MaxAbsScaler 对训练集进行标准化,然后将缩放后的数据用于训练 Logistic 回归模型,最后使用相同的 scaler 对测试集进行缩放,并使用 Logistic 回归模型进行预测。

第二个实例(同时使用训练集和测试集):

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MaxAbsScaler
from sklearn.linear_model import LogisticRegression

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3)

# 实例化 MaxAbsScaler
scaler = MaxAbsScaler()

# 对训练集和测试集进行拟合和变换
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 使用线性回归模型进行拟合
clf = LogisticRegression(random_state=0).fit(X_train_scaled, y_train)

# 预测结果
predictions = clf.predict(X_test_scaled)

在上面的代码中,我们首先对训练集和测试集使用 MaxAbsScaler 进行标准化,并将缩放后的数据用于训练 Logistic 回归模型,最后直接使用 scaler 对测试集进行缩放,并使用 Logistic 回归模型进行预测。与第一个例子不同的是,这里的数据集是同时使用的。