Sklearn中fit()方法多用途辨析及数据缩放、transform区别咨询
sklearn中fit()方法的作用与transform的核心区别
fit()的统一底层逻辑
不管作用在模型还是预处理工具上,fit()的核心能力都是仅基于训练集数据,计算得到固定的、后续要用到的统计量/参数,过程中不会修改输入的原始数据。
两种常见场景下fit()的具体作用
- 有监督学习模型调用fit()
作用是学习模型的可训练参数,为后续预测做准备。比如线性回归的权重系数、决策树的分裂规则、KNN的训练集存储都在这一步完成。
示例调用:
注意:该步骤绝对不能引入测试集数据,否则会发生数据泄露,导致模型泛化能力评估结果失真。model.fit(X_train, y_train) - 数据预处理工具调用fit()
作用是计算预处理需要的固定统计量,不会直接修改输入数据,也不涉及模型训练。比如MinMaxScaler调用fit()时会计算训练集每个特征的最大值、最小值,StandardScaler会计算训练集每个特征的均值、标准差,这些统计量会存在预处理对象中作为后续转换的统一基准。
示例调用:min_max_scaler = preprocessing.MinMaxScaler() min_max_scaler.fit(X_train)
fit()与transform()的核心区别
fit():只负责计算统计量/参数,输出是拟合完成的对象(训练好的模型、计算好统计量的预处理工具),不修改输入数据。transform():不做任何新的统计计算,仅调用拟合好的对象中已存储的固定统计量,对输入数据做规则化转换,输出是转换后的数据。
常用的
fit_transform()是两步操作的合并,等价于先调用fit()再调用transform(),仅可用于训练集,禁止用于测试集,避免测试集的分布信息被引入统计量计算造成数据泄露。
完整流程示例说明
# 初始化归一化工具 min_max_scaler = preprocessing.MinMaxScaler() # 用训练集计算归一化需要的最大、最小值,存在scaler对象中 min_max_scaler.fit(X_train) # 用统一的训练集统计量,分别转换训练集和测试集,保证缩放基准一致 X_train2 = min_max_scaler.transform(X_train) X_test2 = min_max_scaler.transform(X_test) # 初始化KNN分类模型 knn = KNeighborsClassifier(n_neighbors=3,metric="euclidean") # 模型用预处理后的训练集拟合,学习预测需要的参数 knn.fit(X_train2, y_train) # 用训练好的模型对测试集做预测 y_pred = knn.predict(X_test2)
内容的提问来源于stack exchange,提问作者8-Bit Borges
相关产品推荐
相关产品推荐

