【问题标题】:Apache Spark Streaming K-means: I need know how many iterations runs in the same data?Apache Spark Streaming K-means:我需要知道在同一数据中运行了多少次迭代?
【发布时间】:2015-12-30 19:19:29
【问题描述】:

我是 Spark 的新手。我正在尝试阅读代码并了解 K-means in Spark Streaming 的工作原理。我不知道如何获得算法在同一数据组中执行的迭代次数。我找不到包含此信息的 Java 文件。

你能帮帮我吗?

谢谢

解决方案:在这个文件 /spark-1.5.0/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeans.scala 中有一个while 语句在run 方法中,它使用一个名为iteration 的变量,Spark 将它写入每次运行的日志中。

【问题讨论】:

    标签: java apache-spark k-means


    【解决方案1】:

    初始化KMeans类时,可以指定max-iteration参数。

    new KMeans().setMaxIterations(iterations)

    然后它将为每个预测使用该参数

    【讨论】:

    • 是的,我知道。但有时算法执行的迭代次数少于最大值,所以我需要知道这个数字。
    • 我找到了答案!:在这个文件/spark-1.5.0/mllib/src/main/scala/org/apache/spark/mllib/clustering/KMeans .scala 在 run 方法中有一个 while,它使用一个名为 iteration 的变量,Spark 将其写入每次运行的日志中。跨度>
    【解决方案2】:

    作为 majitux 解决方案的一个小补充(我还不能发表评论)。如果您想知道 K-Means 的迭代次数,只需将 SPARK 的日志级别更改为 INFO。在外壳内使用:

    spark.sparkContext.setLogLevel("INFO")
    

    或者通过在 conf/log4j.properties 中将其设置为默认值。

    K-Means 运行完成后,日志中会出现字符串“KMeans++ 收敛于 X 次迭代”。

    【讨论】:

      猜你喜欢
      • 2015-12-09
      • 1970-01-01
      • 2020-07-09
      • 2014-12-10
      • 2016-12-24
      • 2013-02-05
      • 2016-07-29
      • 2015-01-16
      • 2017-11-01
      相关资源
      最近更新 更多