我希望使用R对变量进行离散化,最好是SparkR,这样所需的结果将如下所示。
library(arules)
mtcars %>% mutate(bins = discretize(x = mpg, method = "interval", breaks = 4))我查看了文档,但只能在https://spark.apache.org/docs/2.2.0/ml-features.html#bucketizer上看到非R解决方案。
请给我建议。
发布于 2018-09-01 09:07:34
一般来说,SparkR提供了一个非常有限的ML函数子集(计划完全支持Spark3.0,作为一个单独的R包SPARK-24359 SPIP: ML Pipelines in R,尽管像这样的简单离散化可以使用CASE ... WHEN ...语句执行。
首先计算中断:
df <- createDataFrame(mtcars)
min_max <- df %>%
select(min(df$mpg), max(df$mpg)) %>%
collect() %>%
unlist()
n <- 4
breaks <- seq(min_max[[1]], min_max[[2]], length.out = n)然后生成表达式:
bucket <- purrr::map2(
breaks[-n], breaks[-1],
function(x, y) between(column("mpg"), c(x, y))) %>%
purrr::reduce2(
., seq(length(.)),
function(acc, x, y) otherwise(when(x, y), acc),
.init = lit(NA))
df %>% withColumn("bucket", bucket)https://stackoverflow.com/questions/52081718
复制相似问题