关于sklearn中StandardScaler的使用方式
在机器学习中经常会使用StandardScaler进行数据归一化,注意一旦调整好StandardScaler以后就保存下来,后面如果进行测试单个时,可以进行加载并对其进行标准化
StandardScaler 是一种常用的数据标准化方法,用于将数据转换为均值为 0,标准差为 1 的标准正态分布。
标准化过程如下:
-
计算原始数据的均值
mean
和标准差std
。 -
对原始数据进行标准化处理,即对每个数据点减去均值,再除以标准差
在 StandardScaler 中,均值和标准差的计算分别基于训练数据的样本,可以使用 fit
方法计算均值和标准差。然后,使用 transform
方法将数据标准化为标准正态分布。
注意
from sklearn.preprocessing import StandardScaler import numpy as np # 创建一个 3 x 2 的矩阵 X = np.array([[1, 2], [3, 4], [5, 6]]) # 创建 StandardScaler 对象 scaler = StandardScaler() # 计算均值和标准差 scaler.fit(X) # 将数据标准化为标准正态分布 X_scaled = scaler.transform(X) # 打印结果 print("原始数据:\n", X) print("均值:", scaler.mean_) print("标准差:", scaler.scale_) print("标准化后的数据:\n", X_scaled)
输出结果为:
原始数据: [[1 2] [3 4] [5 6]] 均值: [3. 4.] 标准差: [1.63299316 1.63299316] 标准化后的数据: [[-1.22474487 -1.22474487] [ 0. 0. ] [ 1.22474487 1.22474487]]
在上面的代码中,我们首先创建了一个 3 x 2 的矩阵 X
,然后创建了一个 StandardScaler 对象 scaler
。通过调用 fit
方法计算了均值和标准差,并通过调用 transform
方法将原始数据标准化为标准正态分布。最后,我们打印了原始数据、均值、标准差和标准化后的数据。
使用 Python 内置的 pickle 模块保存 StandardScaler 对象
要注意fit_transform
和 fit
+ transform
的区别在于
-
fit_transform
是一个组合方法,它将拟合数据和转换数据这两个步骤合并到一个方法中。它首先拟合数据,然后应用相同的拟合参数转换数据。在使用fit_transform
方法时,你只需在训练集上调用一次,就可以同时进行拟合和转换,这样能够节省时间和代码。 -
fit
和transform
是单独的方法。fit
方法用于从数据中学习模型参数,例如,对于StandardScaler
,它计算并保存数据集的均值和标准差。transform
方法用于使用已学习的模型参数来转换数据。通常,你会在训练集上调用fit
方法来拟合模型,并在训练集和测试集上分别调用transform
方法来转换数据。
在使用机器学习算法时,通常将数据集分成训练集和测试集。通常情况下,我们只使用训练集拟合模型并保存模型,然后使用已保存的模型在测试集上转换数据。因此,在训练集上使用 fit_transform
方法,而在测试集上使用 transform
方法。
下面是一个示例,说明如何使用 fit_transform
方法和 fit
+ transform
方法对数据进行标准化:
from sklearn.preprocessing import StandardScaler import numpy as np # 创建一个 3 x 2 的矩阵 X = np.array([[1, 2], [3, 4], [5, 6]]) # 使用 fit_transform 方法标准化数据 scaler = StandardScaler() X_scaled1 = scaler.fit_transform(X) # 使用 fit 和 transform 方法标准化数据 scaler = StandardScaler() scaler.fit(X) X_scaled2 = scaler.transform(X) # 打印结果 print("使用 fit_transform 方法标准化的结果:\n", X_scaled1) print("使用 fit 和 transform 方法标准化的结果:\n", X_scaled2)
输出为:
使用 fit_transform 方法标准化的结果: [[-1.22474487 -1.22474487] [ 0. 0. ] [ 1.22474487 1.22474487]] 使用 fit 和 transform 方法标准化的结果: [[-1.22474487 -1.22474487] [ 0. 0. ] [ 1.22474487 1.22474487]]
本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/17203643.html,如有侵权联系删除