sparklyr ml_kmeans字段“功能”不存在

问题描述 投票:1回答:1

AWS EC2 Spark / Hadoop集群。

以下baisc K-Means sparklyr代码与Spark 2.0.1一起使用

  kmeans_model <- iris_tbl %>%
  select(Petal_Width, Petal_Length) %>%
  ml_kmeans(centers = 3)

我已升级到Spark 2.1.1,我收到此错误

    Error: java.lang.IllegalArgumentException: Field "features" does not exist.
        at org.apache.spark.sql.types.StructType$$anonfun$apply$1.apply(StructType.scala:264)
        at org.apache.spark.sql.types.StructType$$anonfun$apply$1.apply(StructType.scala:264)
 ...
io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)

我用代码做了一些测试

kmeans_model <- iris_tbl %>%
  select(Petal_Width, Petal_Length) %>%
  ml_kmeans(k = 3, features = c("Petal_Length", "Petal_Width"))

要么

kmeans_model <- iris_tbl %>%
  dplyr::select(Petal_Width, Petal_Length) %>%
  ml_kmeans(centers = 3, features = c("Petal_Length", "Petal_Width"))

但仍然得到同样的错误。

apache-spark k-means apache-spark-mllib sparklyr
1个回答
3
投票

此代码在Spark 2.0中不起作用,就像它在更新版本中无法使用一样。此代码的应用程序不正确,与Spark版本无关。默认情况下ml_kmeans(和其他ml_*函数),期望Vector类型列名为featuresfeatures可以用来覆盖名称,应该是:

长度为一的字符向量

在不使用ft_vector_assembler的情况下,唯一可以使其工作的方法是提供formula

kmeans_model <- iris_tbl %>% 
  ml_kmeans(formula= ~ Petal_Width + Petal_Length, k = 3)
© www.soinside.com 2019 - 2024. All rights reserved.