Python之sklearn数据预处理中fit(),transform()与fit_transform()的区别

  • Post category:Python

Python之sklearn数据预处理中fit(),transform()与fit_transform()的区别

在sklearn数据预处理中,fit()函数、transform()函数和fit_transform()函数是比较常用的三个函数,它们的作用分别是拟合、转换和拟合转换。接下来我们来详细讲解一下它们的区别及使用方法。

fit()函数

fit()函数是指用于拟合模型。在sklearn中,拟合是指不断调整模型参数以尽量减小预测值和真实值之间的误差。对于数据量比较大的数据集,我们通常将它分为训练集和测试集,用训练集来训练模型,用测试集来验证模型的效果。

例如,我们需要对一组数据进行拟合,代码如下:

from sklearn.linear_model import LinearRegression

# 创建一个LR对象
lr = LinearRegression()

x_train = [[1],[2],[3],[4],[5]] # 训练数据特征值
y_train = [2,4,6,8,10] # 训练数据目标值

# 训练数据
lr.fit(x_train,y_train)

上述代码中,我们创建了一个LR对象,然后将训练数据特征值和目标值分别传入fit()函数中进行拟合。在拟合完成后,我们可以通过coef_和intercept_来查看模型的参数,代码如下:

print(lr.coef_) # 输出参数
print(lr.intercept_) # 输出截距

输出结果为:

[2.]
0.0

这说明我们的模型为 y=2x,即将特征值乘以2即可得到目标值。

transform()函数

transform()函数是指用于对数据进行转换。在sklearn中,转换是指将原始数据进行处理,生成特征值矩阵。

例如,我们需要将一组数据进行标准化处理,代码如下:

from sklearn.preprocessing import StandardScaler

# 创建一个标准化对象
sc = StandardScaler()

x = [[1],[2],[3],[4],[5]] # 原始数据

# 对数据进行标准化处理
x_std = sc.fit_transform(x)

print(x_std) # 输出标准化后的数据

上述代码中,我们创建了一个标准化对象sc,然后将原始数据x传入fit_transform()函数中进行标准化处理。当我们打印输出标准化后的数据x_std时,得到以下结果:

[[-1.41421356]
 [-0.70710678]
 [ 0.        ]
 [ 0.70710678]
 [ 1.41421356]]

我们可以看到,数据已经被转换为均值为0、方差为1的标准化数据,即x的每个数据都减去均值再除以标准差。

fit_transform()函数

fit_transform()函数是指用于对数据进行拟合和转换。在sklearn中,fit_transform()函数相当于先用fit()函数拟合模型,再用transform()函数进行数据转换。

例如,我们需要将一组数据进行标准化处理,并拟合成一个模型,代码如下:

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression


# 创建一个标准化对象和一个LR对象
sc = StandardScaler()
lr = LinearRegression()

x_train = [[1],[2],[3],[4],[5]] # 训练数据特征值
y_train = [2,4,6,8,10] # 训练数据目标值

# 对训练数据进行拟合和转换
x_std_train = sc.fit_transform(x_train)

# 对训练数据进行拟合
lr.fit(x_std_train,y_train)

# 打印输出模型参数
print(lr.coef_)
print(lr.intercept_)

上述代码中,我们先创建了一个标准化对象sc和一个LR对象lr,然后将训练数据特征值和目标值分别传入fit_transform()函数中进行拟合和转换,接着将转换后的数据和目标值传入fit()函数中进行拟合,最后输出模型参数。

输出结果为:

[4.]
6.0

这说明我们的模型为 y=4x+6,即将特征值乘以4再加上6即可得到目标值。

综上所述,fit()函数用于拟合模型,transform()函数用于对数据进行转换,fit_transform()函数用于对数据进行拟合和转换。在使用这些函数时,我们需要先创建相应的对象,并将数据传入,然后根据需要选择合适的函数进行操作即可。