news 2026/6/9 17:25:58

Flink ML LinearRegression 用 Table API 训练线性回归并输出预测值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flink ML LinearRegression 用 Table API 训练线性回归并输出预测值

1. LinearRegression 做什么?

它学习一个线性函数(简化表达):

[y^=w⋅x+b][ \hat{y} = w \cdot x + b ][y^=wx+b]

其中:

  • (x)(x)(x)是特征向量(Vector)
  • (w)(w)(w)是权重向量(模型参数)
  • (b)(b)(b)是偏置
  • (y^)(\hat{y})(y^)是预测值(prediction)

2. 输入列与输出列

输入列(Input Columns)

参数名类型默认值说明
featuresColVector"features"特征向量
labelColInteger(示例实际用 Double)"label"要预测的连续标签
weightColDouble"weight"样本权重(可选)

你贴的示例里labelweight都是 Double,这更符合回归场景。

输出列(Output Columns)

参数名类型默认值说明
predictionColInteger(实际为 Double)"prediction"预测值

3. 参数详解(Parameters)

LinearRegressionModel(模型)常用参数:

Key默认值说明
featuresCol"features"特征列名
predictionCol"prediction"预测列名

LinearRegression(训练器)额外参数:

Key默认值说明
labelCol"label"标签列名
weightColnull权重列名(可选)
maxIter20最大迭代次数
reg0.0正则化系数(L2/L1 混合由 elasticNet 控制)
elasticNet0.0ElasticNet 参数:0=纯L2,1=纯L1
learningRate0.1学习率
globalBatchSize32全局 batch 大小
tol1e-6收敛阈值(迭代停止条件之一)

工程建议(很实用):

  • 特征尺度差异大:先StandardScaler再 LR,收敛更稳
  • 数据量大/噪声大:适当加reg,防过拟合、也更稳定
  • 收敛慢:调大maxIter或调学习率(learningRate)但要谨慎

4. Java 示例逐段解读(fit + transform)

你给的示例是“训练后再对同一份数据做预测”,方便验证效果。

4.1 构造输入表:features + label + weight

DataStream<Row>inputStream=env.fromElements(Row.of(Vectors.dense(2,1),4.0,1.0),Row.of(Vectors.dense(3,2),7.0,1.0),Row.of(Vectors.dense(4,3),10.0,1.0),Row.of(Vectors.dense(2,4),10.0,1.0),Row.of(Vectors.dense(2,2),6.0,1.0),Row.of(Vectors.dense(4,3),10.0,1.0),Row.of(Vectors.dense(1,2),5.0,1.0),Row.of(Vectors.dense(5,3),11.0,1.0));TableinputTable=tEnv.fromDataStream(inputStream).as("features","label","weight");
  • features是二维向量
  • label是回归目标(Double)
  • weight全是 1.0(表示每个样本权重一样)

4.2 创建训练器并指定权重列

LinearRegressionlr=newLinearRegression().setWeightCol("weight");

如果你不需要样本权重,完全可以不设weightCol

4.3 训练模型 + 预测

LinearRegressionModellrModel=lr.fit(inputTable);TableoutputTable=lrModel.transform(inputTable)[0];
  • fit():在 Table 上训练,得到模型
  • transform():输出表会多一个prediction

4.4 读取输出:对比 label 与 prediction

doubleexpectedResult=(Double)row.getField(lr.getLabelCol());doublepredictionResult=(Double)row.getField(lr.getPredictionCol());System.out.printf("... Expected Result: %s \tPrediction Result: %s\n",expectedResult,predictionResult);

5. 实战用法:最常见的两条链路

链路 A:数值特征 → StandardScaler → LinearRegression

如果你的特征量纲差别大(金额、次数、时长混在一起),强烈推荐:

  • VectorAssembler(拼特征)
  • StandardScaler(标准化)
  • LinearRegression(训练)

链路 B:类别特征(StringIndexer + OneHot)+ 数值特征 → VectorAssembler → LinearRegression

当你的输入既有类别又有数值时:

  • StringIndexer:字符串类别 → index
  • OneHotEncoder:index → 稀疏向量
  • VectorAssembler:数值列 + 类别向量 拼成 features
  • LinearRegression:训练回归

6. 小结

Flink ML 的 LinearRegression 使用非常标准化:

  • 输入:features(Vector)+label(Double)+ 可选weight(Double)
  • 训练:lr.fit(table)
  • 预测:model.transform(table)输出prediction
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 2:22:16

提示工程架构师的成长之路:强化学习优化提示词是必经关卡吗?

提示工程架构师的成长之路&#xff1a;强化学习优化提示词是必经关卡吗&#xff1f; 关键词&#xff1a;提示工程架构师、强化学习、提示词优化、自然语言处理、人工智能、机器学习、生成式AI 摘要&#xff1a;本文深入探讨提示工程架构师在成长过程中&#xff0c;强化学习对于…

作者头像 李华
网站建设 2026/6/7 2:02:44

AI 应用最成功的落地方向:Vibe Coding

从写代码到 Vibe Coding&#xff1a;AI 应用最成功的落地方向 如果把时间拨回到一年前&#xff0c;很多团队对 AI 写代码 的态度仍然非常谨慎&#xff0c;甚至是明确反对的&#xff1a; 不允许提交 AI 生成的代码在内部开发规范中 明确禁止使用 AI 工具 而现在&#xff0c;情…

作者头像 李华
网站建设 2026/6/7 7:27:37

双馈风机DFIG的LVRT仿真模型及Crowbar电路研究

双馈风机 DFIG 低电压穿越 MATLAB仿真模型LVRT 双馈异步风力 Crowbar电路 &#xff08;1&#xff09;转子侧变换器采用基于定子电压定向的矢量控制策略&#xff0c;有功无功解耦&#xff0c;具备MPPT能力&#xff0c;采用功率外环电流内环双闭环控制结构&#xff1b; &#xf…

作者头像 李华
网站建设 2026/6/7 6:38:09

PyTorch镜像运行分布式训练:DDP模式配置教程

PyTorch镜像运行分布式训练&#xff1a;DDP模式配置教程 在深度学习模型日益庞大的今天&#xff0c;单卡训练早已无法满足实际需求。一个百亿参数的Transformer模型&#xff0c;在一块RTX 3090上跑完一轮epoch可能需要几天时间——这显然不是任何团队能接受的研发节奏。更现实…

作者头像 李华
网站建设 2026/6/7 6:51:21

会用 Grid 布局吗?面试官问我这个问题,我差点没答上来!

&#x1f3af; 面试官为什么问这个&#xff1f; 说实话&#xff0c;第一次被问到这个问题的时候&#xff0c;我心里还有点小紧张。Grid 布局虽然用得不少&#xff0c;但要系统地讲清楚&#xff0c;还真得好好想想。 面试官问这个问题&#xff0c;其实是想了解你&#xff1a; &a…

作者头像 李华
网站建设 2026/6/6 7:41:50

三磷酸胞苷二钠—驱动细胞代谢与核酸合成的核心核苷酸 36051-68-0

三磷酸胞苷二钠是生物体内一种至关重要的核苷酸分子&#xff0c;属于Sugar Nucleotides类别。作为细胞能量代谢和核酸生物合成的核心底物&#xff0c;它在维持生命活动中扮演着不可或缺的角色。从基因表达调控到细胞信号传导&#xff0c;从基础生物化学研究到现代药物开发&…

作者头像 李华