You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pycaret的setup函数中仅对特定列执行归一化而非全表

PyCaret 仅对指定列执行归一化的setup参数配置方法

要在PyCaret的setup流程中实现“不全量归一化、仅对指定少数列做归一化”的需求,不需要编写自定义预处理管道,直接通过原生参数组合即可完成配置,核心逻辑是通过白名单机制缩小归一化步骤的作用范围,其余列全程保留在数据集中正常参与建模与其他预处理流程。

核心参数配置逻辑

  • 首先必须开启归一化总开关:将normalize参数设为True,未开启时所有归一化相关逻辑都不会触发。
  • 搭配归一化列白名单参数normalize_features:传入需要执行归一化的列名组成的列表,配置后内置归一化流程仅会作用于列表内的列,不在列表中的数值列、分类列都不会被执行归一化操作,也不会被从数据集中排除。
  • 可根据需求搭配normalize_method参数指定归一化算法,可选值包括zscore、minmax、maxabs、robust,和全量归一化时的配置逻辑完全一致。

注意:如果未给normalize_features传值,PyCaret会默认对所有自动识别为数值型的列执行归一化,也就是全量处理的默认行为。

配置示例

假设你的数据集包含col_a、col_b、col_c、col_d、target几列,仅需要对col_a和col_c做z-score归一化,其余列不做归一化,setup的写法参考:

from pycaret.classification import *
exp = setup(
    data=your_dataframe,
    target='target',
    normalize=True,
    normalize_method='zscore',
    # 核心配置:指定需要归一化的列
    normalize_features=['col_a', 'col_c']
)

常见踩坑提示

  • 不要和ignore_features参数混淆:ignore_features的作用是把指定列从整个建模流程中完全移除,既不参与预处理也不参与训练,和“仅不参与归一化、其余流程正常参与”的需求完全不同。
  • 如果在normalize_features中指定的列被PyCaret自动识别为分类类型,需要提前通过numeric_features参数修正列的类型识别结果,否则归一化步骤会跳过类型不匹配的列,达不到预期效果。
  • 低版本PyCaret(2.0之前无normalize_features参数时)的兼容方案:可以把所有不需要归一化的数值列,通过categorical_features参数临时声明为分类类型,让内置归一化流程跳过这些列。但这种方案会让这些列走分类特征的编码流程,仅适合临时应急,不建议正式场景使用。

内容的提问来源于stack exchange,提问作者gveronese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 05:24:03