news 2026/7/1 21:20:56

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/30 8:30:17

HarmonyOS 文件权限管理实战详解(含可运行 Demo)

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

作者头像 李华
网站建设 2026/6/30 5:39:57

Mac用户也能用PyTorch-CUDA镜像?通过虚拟机实现方案

Mac用户也能用PyTorch-CUDA镜像&#xff1f;通过虚拟机实现方案 在深度学习项目中&#xff0c;你是否曾遇到这样的窘境&#xff1a;手握一台性能强劲的MacBook Pro&#xff0c;却因为无法使用CUDA加速而只能眼睁睁看着训练时间从几分钟拖到几小时&#xff1f;更别提那些依赖NV…

作者头像 李华
网站建设 2026/7/1 14:03:33

使用 Go 语言进行 LangChain 与 LangGraph 的实战案例研究报告

摘要 本文基于 Go 语言生态,系统研究了 LangChain 与 LangGraph 框架的实战应用。通过对比分析两种框架在 Go 环境下的实现差异,结合文档分析、多智能体协作等典型场景,深入探讨了 Go 语言在 AI 应用开发中的技术优势与实践挑战。报告提供了完整的代码实现方案,为开发者提…

作者头像 李华
网站建设 2026/6/26 12:40:36

风光储并网直流微电网Simulink仿真模型探索

储能控制器&#xff0c;风光储、风光储并网直流微电网simulink仿真模型。 系统有光伏发电系统、风力发电系统、储能系统、负载、逆变器?lcl?大电网构成。 附参考文献。 同时可附逆变器控制参数&#xff0c;lcl参数计算m文件&#xff08;另议&#xff09;。光伏系统采用扰动观…

作者头像 李华
网站建设 2026/7/1 11:13:13

PyTorch镜像适合做自然语言处理吗?NLP案例演示

PyTorch镜像在自然语言处理中的实战价值&#xff1a;从环境配置到模型部署的全链路解析 在当前深度学习工程实践中&#xff0c;一个常见的困境是&#xff1a;算法团队花费数天时间才把环境搭好&#xff0c;结果发现“代码跑通了&#xff0c;但GPU没用上”。尤其在自然语言处理…

作者头像 李华
网站建设 2026/6/30 19:59:14

图解说明温度传感器信号输出方式(模拟/I2C/单总线)

三种温度传感器输出方式怎么选&#xff1f;模拟、I2C、单总线实战全解析你有没有遇到过这样的问题&#xff1a;在做一个温控系统时&#xff0c;面对琳琅满目的温度传感器&#xff0c;不知道该选哪一种&#xff1f;是用最便宜的LM35直接接ADC&#xff0c;还是上DS18B20搞分布式测…

作者头像 李华