我正在运行sparklyr 1.0.0和SparkR 2.4.1。我正在尝试从sparklyr文档执行ft_min_max_scaler()示例,但是它无法正常工作。该函数运行无错误,但在输出中似乎没有对输入的更改。
在我使用这些功能的其他代码无法正常工作之后,我开始尝试此示例代码。
代码如下:
sc <- spark_connect(master = "spark://<address>:7077",spark_home = "C:/Users/paul/Downloads/spark-2.4.1-bin-hadoop2.7", app_name = "sparklyr",config=config)
data(iris)
iris_tbl <- sdf_copy_to(sc, iris, name = "iris_tbl", overwrite = TRUE)
iris_tbl
features <- c("Sepal_Length", "Sepal_Width", "Petal_Length", "Petal_Width")
iris_tbl %>%
ft_vector_assembler(input_col = features,
output_col = "features_temp",uid="assembler") %>%
ft_min_max_scaler(input_col = "features_temp",
output_col = "features",uid="scaler")
我希望列出的4个属性将缩放为[0,1],但它们不会改变并且都大于1。
更新:
以下代码解决了该问题,但我仍然需要弄清楚如何将“功能”列复制回数据框中:
iris_tbl<-iris_tbl %>%
ft_vector_assembler(input_col = features,
output_col = "features_temp",uid="assembler") %>%
ft_min_max_scaler(input_col = "features_temp",
output_col = "features",uid="scaler") %<% collect()
iris_tbl$features