TabPFN:零调参的表格数据基础模型,1 秒内出预测
【免费下载链接】TabPFN⚡ TabPFN: Foundation Model for Tabular Data ⚡项目地址: https://gitcode.com/GitHub_Trending/ta/TabPFN
TabPFN 是面向表格数据的 foundation model:把fit(X_train, y_train)当作缓存而非训练,predict时一次前向推理直接给出分类或回归结果。相比「选模型→交叉验证调参→预处理→再调参」的常规流程,它砍掉了调参与手写流水线两步,5000 行数据 1 秒内出预测。
它解决了什么问题
小数据(几千行)上 GBDT 和树模型容易过拟合,调参调了一下午,AUC 只涨了 0.002;分类列、缺失值、量纲差异又得先花半天写清洗代码。TabPFN 的思路相反:在海量合成表格上预训练,推理阶段靠集成前向预测,而不是在你的小数据集上迭代优化。
- 无需训练:5000 行数据,
predict单次前向 1 秒内出结果 - 内置完整预处理:缺失值、量纲、分类编码全部自动处理
- 自动识别分类列:不传
categorical_features_indices也能推断 - GPU 加速:
device="cuda"直接跑,CPU 可处理 5000 行以内
从零跑通第一次
最小安装一条命令即可(需要 Python 3.10+,PyTorch 2.5+ 会随之装好):
pip install tabpfn下面这段代码在 sklearn 的乳腺癌数据集上跑一遍二分类:加载数据 → 切分 → fit → 预测 → 算 AUC 和准确率。
from sklearn.datasets import load_breast_cancer from sklearn.metrics import accuracy_score, roc_auc_score from sklearn.model_selection import train_test_split from tabpfn import TabPFNClassifier X, y = load_breast_cancer(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42 ) clf = TabPFNClassifier() clf.fit(X_train, y_train) # 首次运行自动下载并缓存模型权重 proba = clf.predict_proba(X_test) pred = clf.predict(X_test) print("ROC AUC:", roc_auc_score(y_test, proba[:, 1])) print("Accuracy:", accuracy_score(y_test, pred))首次运行会先下载默认 TabPFN-3 的 checkpoint 并缓存到本地,之后每次 fit/predict 都是秒级。跑完你会看到两行输出,例如ROC AUC: 0.99x和Accuracy: 0.97x——乳腺癌这种量级的小数据集上,TabPFN-3 通常能拿到 0.95 以上的 AUC。
实战中的取舍
- 5000 行以内的中小表格分类:直接
TabPFNClassifier()默认配置即可,不传任何超参,原因是预训练已覆盖这类分布。 - 带 pandas
category列的 DataFrame:直接传入,或显式声明categorical_features_indices,跳过 OrdinalEncoder 这类手工编码步骤。 - 需要概率输出做下游决策:用
predict_proba(X_test)拿每类概率,predict只给标签。 - 想换模型版本对比效果:
TabPFNClassifier.create_default_for_version(ModelVersion.V2_6),一行切换旧版权重。
⚠️ 最容易踩的坑:默认 TabPFN-3 的 CPU 上限是 5000 行,超过后要么换 GPU,要么用create_default_for_version回退到旧版模型(CPU 上限 1000 行)。另外 TabPFN-3 权重是非商业许可,商用场景记得切到ModelVersion.V2。
和谁搭配更顺手
- scikit-learn:
fit/predict/predict_proba与 estimator 接口一致,用train_test_split切数据、accuracy_score/roc_auc_score评估,放进现有 Pipeline 不用改调用方式。 - pandas:DataFrame 直接作为输入,
categorydtype 的列会被自动识别为分类特征,省掉编码步骤。 - PyTorch:推理底层就是 PyTorch,微调场景可看 examples/finetune_classifier.py 里的完整流程。
想继续往下走,直接看 examples/notebooks/TabPFN_Demo_Local.ipynb 里的交互式演示。
【免费下载链接】TabPFN⚡ TabPFN: Foundation Model for Tabular Data ⚡项目地址: https://gitcode.com/GitHub_Trending/ta/TabPFN
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考