ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

数值、类别、日期混合列也不怕:TabFM数据自动类型检测与预处理流水线揭秘

数值、类别、日期混合列也不怕:TabFM数据自动类型检测与预处理流水线揭秘 数值、类别、日期混合列也不怕TabFM数据自动类型检测与预处理流水线揭秘【免费下载链接】tabfmTabFM (Tabular Foundation Model) is a pretrained tabular foundation model developed by Google Research for tabular data regression and classification.项目地址: https://gitcode.com/gh_mirrors/ta/tabfmTabFM 是 Google Research 开源的表格数据基础模型Tabular Foundation Model支持零样本分类与回归。它最省心的一点是你的 DataFrame 里数值、类别、日期列随便混着来——调用fit()时TabFM 会自动完成列类型检测与预处理流水线无需手动写任何编码或缩放代码。本文带你看懂这条隐藏流水线是怎么工作的。三步上手混合类型数据直接喂给它 以分类任务为例只需四行核心代码完整版见 examples/classification_example.pyfrom tabfm import TabFMClassifier import tabfm model tabfm.tabfm_v1_0_0_jax.load(model_typeclassification) clf TabFMClassifier(modelmodel) X_train pd.DataFrame({ age: [25.0, 45.0, 35.0], # 数值列 job: [engineer, manager, engineer], # 类别列 join_date: [2023-01-05, 2022-07-19, 2021-11-30], # 日期列文本 }) clf.fit(X_train, y_train) # 类型检测 编码 缩放全部自动完成fit()这一行背后就藏着本文要拆解的完整流水线。第一关列类型自动检测是怎么做到的核心逻辑在 tabfm/src/classifier_and_regressor.py 的TransformToNumerical.fit()方法中。对每一列它按以下优先级判断判断顺序检测条件归类结果1dtype 本身是datetime64系列日期列2文本列中长得像日期的值超过 80%日期列3dtype 是数值型数值列4其余情况类别列兜底其中最巧妙的是第 2 条——文本日期的启发式检测_looks_like_datetime函数先用pd.to_numeric试转能转成数字的列直接排除避免把编号误判为日期对超过 500 行的列固定种子随机抽样 500 行再做解析保证检测速度且不依赖模型随机种子列类型必须稳定否则换个种子特征结构就变了用pd.to_datetime(..., errorscoerce, formatmixed)宽容解析只要 20% 以上能解析为日期就判定为日期列——即使日期里混了几个脏数据也没关系。一个贴心细节开启verboseTrue后fit()会打印每一列被分到了哪个类别帮你核对检测结果。第二关三类列各走各的专属编码器检测完成后TabFM 用 sklearn 的ColumnTransformer让三类列并行进入各自的编码分支 数值列 → 缺失值填补数值列走SimpleImputer自动把缺失值用训练集的均值/众数补齐你不必提前处理 NaN。️ 类别列 → 智能序数编码CategoricalOrdinalEncoder支持三种编码顺序mode参数appearance默认按首次出现顺序编号frequency按出现频率降序编号最常见的类别拿到 0 号——对预测任务往往更有效alphabetical按字母升序对齐 sklearnLabelEncoder习惯。同时内置两个抗脏数据设计稀有类别过滤默认min_cat_frequency2训练中出现次数不足 2 次的类别直接归为未知统一未知码测试集中出现的新类别和缺失值统一编码为-1模型见过这个标记不会崩。 日期列 → 一列变五列DatetimeTransformer会把每个日期列展开为 5 个数值特征Unix 纳秒时间戳 年 月 日 星期几并统一转 UTC。这样季节性周期规律对模型来说都是显式可见的信号缺失日期用训练集日期均值填补。第三关数值特征精修流水线编码完成后数据进入PreprocessingPipeline依次经过三道工序标准缩放CustomStandardScaler做标准化并把结果裁剪到 [-100, 100]防止极端值干扰注意力机制可选归一化可选powerYeo-Johnson 幂变换、quantile分位数变换、quantile_rtdl加噪分位数变换借鉴表格深度学习研究、robust鲁棒缩放等方法默认集成none和power两种做集成投票异常值钳制OutlierRemover用两阶段 Z-score 法阈值 4 倍标准差识别异常值重算统计量后做对数式裁剪让极端异常点不再绑架整个分布。此外UniqueFeatureFilter会顺手删掉只有一种取值的列——常数列对模型毫无信息量白白占位。为什么要做这么多花样流水线末尾还有一个EnsembleGenerator它对同一份编码后的数据做特征重排、类别值置换、类别标签偏移等操作生成多个不同视角的数据副本交给多个模型副本分别推理再融合。而前面那些稳定的类型检测 统一编码正是集成可靠的前提——只有每个副本的特征 schema 完全一致投票结果才可解释、可复现。关键文件清单预处理流水线全部源码tabfm/src/classifier_and_regressor.py分类示例含混合类型数据examples/classification_example.py回归示例examples/regression_example.py安装与快速上手说明README.md依赖版本清单requirements.txt小结TabFM 的fit()看似只是喂数据实际默默完成了类型检测 → 分类编码 → 日期展开 → 缺失填补 → 缩放归一化 → 异常值处理六道工序。对新手来说这意味着你可以把业务里最常见的数值 类别 日期混合表格直接交给它把精力留给特征设计本身而不是数据清洗脚本。【免费下载链接】tabfmTabFM (Tabular Foundation Model) is a pretrained tabular foundation model developed by Google Research for tabular data regression and classification.项目地址: https://gitcode.com/gh_mirrors/ta/tabfm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表