四条语句跑完机器学习:让模型成为一个 SQL 函数

系列《为什么 InfiniSQL 是最适合 Agentic 范式的数据语言》第 13 篇

配图:测试环境实测

让 Agent 做机器学习,主流路线是生成 sklearn 代码。看看这条路上 Agent 要跨过多少东西:train_test_split 的参数顺序、fit/transform/fit_transform 的区别、numpy 数组和 DataFrame 的形状匹配、joblib.dump 的路径管理、预测时 feature 顺序必须和训练时一致......每一项都是一类经典 bug。

InfiniSQL 把整条 ML 流水线压成了 4 条语句:

sql 复制代码
load jsonStr.`jsonStr` as rawData;

-- ① 特征工程:数组 → 向量,仍然是 select
select vec_dense(array(f1, f2, f3, f4)) as features,
       cast(label as double) as label
from rawData as trainData;

-- ② 训练:train 表 as 算法.`模型路径`
train trainData as RandomForest.`/models/iris_rf` where
keepVersion="true"
and `fitParam.0.labelCol`="label"
and `fitParam.0.featuresCol`="features"
and `fitParam.0.maxDepth`="4";

-- ③ 模型注册成 SQL 函数
register RandomForest.`/models/iris_rf` as iris_predict;

-- ④ 预测:模型就是一个普通函数
select label as actual,
       vec_argmax(iris_predict(features)) as predicted
from trainData as predictions;

测试环境实测:训练集回代 9/9 全部正确。换无监督也是同一套动词------train ... as KMeans 后 register,cluster_of(features) 直接在 select 里给每个点标簇号(实测六个点精确分成两簇)。

三个值得咀嚼的设计

1. 模型的消费形态是"函数",不是"对象"。

sklearn 的模型是一个要被 Python 代码持有的对象(怎么加载、怎么序列化、怎么保证版本一致,全是使用者的事)。InfiniSQL 的模型 register 之后就是一个 UDF------iris_predict(features) 和 upper(name) 在语法地位上没有任何区别。Agent 不需要"模型管理"这个心智模块,它只是在用一个函数。

2. ML 没有打断"表"的世界观。

特征工程是 select,训练输入是表,预测输出还是表。整个 ML 环节插在数据管道中间,上游清洗和下游聚合都不用切换语境。对 Agent 来说这意味着:做 ML 和做 group by 是同一种任务,不存在"从 SQL 模式切换到 Python 模式"的上下文重载。

3. 多组参数一次跑,版本自动管理。

fitParam.0.*、fitParam.1.* 可以并排写多组超参,引擎并行训练返回对比结果;keepVersion="true" 让每次训练自动落成新版本。调参这种最容易让 Agent 陷入循环的活,被语言收敛成了声明式的参数组。

这决定了 Agent 的角色

用 sklearn 的 Agent 是一个机器学习工程师 :管对象、管序列化、管环境依赖。用 InfiniSQL 的 Agent 是一个分析师:它只回答"用什么特征、试哪个算法、看哪个指标"。

前者的错误空间是无限的(任何 Python 代码都可能错),后者的错误空间被文法框死在 train/register/predict 的参数表里------而参数表还能用 !show et/params/RandomForest 现场查(第 7 篇)。

把 ML 从"一段代码"变成"一条语句",Agent 的 ML 能力就从"碰运气"变成了"查表"。

下一篇:!assert 质量门------让管道自己拒绝脏数据。


InfiniSQL 是 InfiniSynapse 数据分析 Agent 底座引擎。RandomForest 与 KMeans 示例均在 Infinity SQL 测试环境实测通过。

相关推荐
Shockang6 小时前
llama.cpp 本地运行 9B 模型:部署、工具调用与微调数据
人工智能
Shockang6 小时前
n8n 智能体工作流实战:触发、工具、记忆与发布护栏
人工智能
冬奇Lab8 小时前
开源项目第241期:YuE2 —— 用符号乐谱当“白盒“接口的开源音乐生成模型,SongBench 超越 Suno v5/v6
人工智能
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天9 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源