用途:eml-fit 是一层薄 CLI,封装 eml_core.fit,对 CSV 做确定性、可复现的符号回归。同一 CSV 每次都给出相同答案,并输出机器可校验的 JSON 结论,便于后续工具或智能体直接分支判断。适合回答“哪个初等函数规律生成了这份 CSV”“这份数据是否形如 sin(ln(x))”之类问题。
主要能力与模式:
- unary(默认):2 列 (x, y),在一元基础函数 {ln, exp, sqrt, log10, sin, cos, tan, asin, acos, atan} 中匹配。
- affine(--affine):拟合 y ≈ a·w(x) + b,并把 a、b 吸附到已知常数;识别常数包括 {0, ±1, ±2, ±3, 1/2, 1/3, ±pi, pi/2, pi/3, pi/4, 2*pi, 1/pi, ±e, 1/e, ln(2), ln(10), 1/ln(10), sqrt(2), i, G_catalan, zeta(3), K_khinchin, log2(e), e^pi, gamma} 等。
- composite(--composite):枚举一元原语对的二层复合 w(v(x))(约 100 对),按 max |residual| 排序,可捕捉 sin(ln(x))、exp(sqrt(x))。
- binary(3 列 CSV 自动):对 (x, y, z) 匹配 {add, sub, mult, div, pow},不做角色推断。
使用方式:需在仓库根目录运行。命令示例:python eml-skill/skills/eml-fit/scripts/fit.py --csv data.csv [--top-k 3] [--tolerance 1e-6];加 --affine [--snap-tol 1e-4];加 --noise-sigma 0.01 启用噪声鲁棒模式;加 --composite;3 列 CSV 直接传路径。标准输出为一个 JSON 对象(--format md 输出 Markdown)。退出码:0 匹配、1 无匹配、2 CSV 解析错误、3 用法错误。可选 --out-dir DIR 归档 fit.json 与 fit.md。
限制:不做新树搜索、无可学习参数、不支持三层及以上或乘积/求和复合、无 x 噪声总体最小二乘、无二元角色推断。affine 两个参数都自由,常数 y 数据会以 a=0 平凡拟合。复数主分支下 cmath.sqrt(-1)=1j、cmath.log(-1)=iπ,实数域负 x 会在复残差下失败。常数吸附容差与拟合容差分别由 --snap-tol 和 --tolerance 控制,配合 --noise-sigma 自动放宽。相关基准见 references/benchmarks.md;其余平台/收费信息暂未提供。