sklearn数据预处理中fit(),transform()与fit_transform()的区别
1 概述
注意这是数据预处理中的方法:
- Fit(): Method calculates the parameters μ and σ and saves them as internal objects.
解释:简单来说,就是求得训练集X的均值啊,方差啊,最大值啊,最小值啊这些训练集X固有的属性。可以理解为一个训练过程
- Transform(): Method using these calculated parameters apply the transformation to a particular dataset.
解释:在Fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。
- Fit_transform(): joins the fit() and transform() method for transformation of dataset.
解释:fit_transform是fit和transform的组合,既包括了训练又包含了转换。
transform()和fit_transform()二者的功能都是对数据进行某种统一处理(比如标准化~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等)
fit_transform(trainData)对部分数据先拟合fit,找到该part的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该trainData进行转换transform,从而实现数据的标准化、归一化等等。
根据对之前部分trainData进行fit的整体指标,对剩余的数据(testData)使用同样的均值、方差、最大最小值等指标进行转换transform(testData),从而保证train、test处理方式相同。所以,一般都是这么用:
-
from sklearn.preprocessing
import StandardScaler
-
sc = StandardScaler()
-
sc.fit_tranform(X_train)
-
sc.tranform(X_test)
Note:
- 必须先用fit_transform(trainData),之后再transform(testData)
- 如果直接transform(testData),程序会报错
- 如果fit_transfrom(trainData)后,使用fit_transform(testData)而不transform(testData),虽然也能归一化,但是两个结果不是在同一个“标准”下的,具有明显差异。(一定要避免这种情况)
2 举例
以PCA预处理,举个栗子:
-
import pandas
as pd
-
import numpy
as np
-
-
from sklearn.decomposition
import PCA
-
-
#==========================================================================================
-
X1=pd.DataFrame(np.arange(
9).reshape((
3,
3)),index=[
'a',
'b',
'c'],
-
columns=[
'one',
'two',
'three'])
-
-
pca=PCA(n_components=
1)
-
-
newData1=pca.fit_transform(X1)
-
-
pca.fit(X1)
-
newData12=pca.transform(X1)
-
-
"""
-
newData1和newData2结果一致
-
"""
-
#==========================================================================================
-
a=[[
1,
2,
3],[
5,
6,
7],[
4,
5,
8]]
-
-
X2=pd.DataFrame(np.array(a),index=[
'a',
'b',
'c'],
-
columns=[
'one',
'two',
'three'])
-
pca_new=PCA(n_components=
1)
-
pca_new.transform(X2)
-
"""
-
没有fit,直接transform报错:
-
NotFittedError: This PCA instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.
-
"""
3 参考文献
- what is the difference between 'transform' and 'fit_transform' in sklearn
- sklearn.decomposition.PCA方法中fit, fit_transform, transform应该怎么用
- scikit-learn数据预处理fit_transform()与transform()的区别(转) - CSDN博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)