返回介绍

FlinkML - Flink 的机器学习

发布于 2025-05-02 18:19:17 字数 3310 浏览 0 评论 0 收藏

FlinkML 是 Flink 的机器学习(ML)库。这是 Flink 社区的一项新工作,其中包含越来越多的算法和贡献者。使用 FlinkML,我们的目标是提供可扩展的 ML 算法,直观的 API 和工具,帮助最小化端到端 ML 系统中的胶水代码。您可以在我们的 愿景和路线图中查看 有关我们目标的更多详细信息以及类库的发展方向。

支持的算法

FlinkML 目前支持以下算法:

监督学习

  • SVM 使用通信高效的分布式双坐标上升(CoCoA)
  • 多元线性回归
  • 优化框架

无监督学习

  • k-最近邻居关联

数据预处理

  • 多项式特征
  • 标准尺度
  • MinMax Scaler

建议

  • 交替最小二乘(ALS)

离群选择

  • 随机异常值选择(SOS)

公用事业

  • 距离指标
  • 交叉验证

入门

您可以查看我们的 快速入门指南 ,了解全面的入门示例。

如果你想直接进入,你必须 设置一个 Flink 程序 。接下来,您必须将 FlinkML 依赖项添加到项目的依赖项中 pom.xml

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-ml_2.11</artifactId>
  <version>1.7-SNAPSHOT</version>
</dependency>

请注意,FlinkML 目前不是二进制分发的一部分。请参阅 此处 与其链接以进行群集执行。

现在您可以开始解决分析任务了。以下代码片段显示了训练多元线性回归模型的难易程度。

// LabeledVector is a feature vector with a label (class or real value) val trainingData: DataSet[LabeledVector] = ...
val testingData: DataSet[Vector] = ...

// Alternatively, a Splitter is used to break up a DataSet into training and testing data. val dataSet: DataSet[LabeledVector] = ...
val trainTestData: DataSet[TrainTestDataSet] = Splitter.trainTestSplit(dataSet)
val trainingData: DataSet[LabeledVector] = trainTestData.training
val testingData: DataSet[Vector] = trainTestData.testing.map(lv => lv.vector)

val mlr = MultipleLinearRegression()
  .setStepsize(1.0)
  .setIterations(100)
  .setConvergenceThreshold(0.001)

mlr.fit(trainingData)

// The fitted model can now be used to make predictions val predictions: DataSet[LabeledVector] = mlr.predict(testingData)

管道

FlinkML 的一个关键概念是它的 scikit-learn 灵感流水线机制。它允许您快速构建复杂的数据分析管道,使其在每个数据科学家的日常工作中出现。可以在 此处 找到 FlinkML 管道及其内部工作的深入描述。

以下示例代码显示了使用 FlinkML 设置分析管道是多么容易。

val trainingData: DataSet[LabeledVector] = ...
val testingData: DataSet[Vector] = ...

val scaler = StandardScaler()
val polyFeatures = PolynomialFeatures().setDegree(3)
val mlr = MultipleLinearRegression()

// Construct pipeline of standard scaler, polynomial features and multiple linear regression val pipeline = scaler.chainTransformer(polyFeatures).chainPredictor(mlr)

// Train pipeline pipeline.fit(trainingData)

// Calculate predictions val predictions: DataSet[LabeledVector] = pipeline.predict(testingData)

可以通过调用方法将 a 链接 Transformer 到另一个 Transformer 或一组链接。如果想要链接到一个或一组链接,则必须调用该方法。 Transformers``chainTransformer``Predictor``Transformer``Transformers``chainPredictor

如何贡献

Flink 社区欢迎所有希望参与 Flink 及其类库开发的贡献者。为了快速开始为 FlinkML 做出贡献,请阅读我们的官方 贡献指南

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。