gpt4 book ai didi

r - 在 sparklyr 中创建虚拟变量?

转载 作者:行者123 更新时间:2023-12-02 03:08:41 25 4
gpt4 key购买 nike

我正在尝试扩展我的一些 ML 管道,我喜欢 rstudio、spark 和 sparklyr 打开的 h2o 的组合 (http://spark.rstudio.com/)

我想弄清楚的一件事是如何使用 sparklyr 从数据框中的字符向量创建虚拟列。

我已经尝试了以下方法,但我认为它可能混合了一些 sparklyr 尚未实现的功能。

library(sparklyr)
library(dplyr)

sc <- spark_connect(master = "local")

flights_tbl <- copy_to(sc, nycflights13::flights, "flights")

flights_tbl %>% bind_cols(as_data_frame(setNames(lapply(unique(flights_tbl$carrier),
function(x){as.integer(flights_tbl$carrier == x)}),
paste0('var2_', levels(flights_tbl$carrier)))))

在这个例子中,我想为每个运营商创建指标变量。

老实说,我对 dplyr 不是很熟悉,所以不确定我该怎么做。

是否有一个 spark 函数已经存在,我可以通过 sparklyr 扩展程序调用它,或者有没有办法只使用 dplyr 函数来实现?

更新

我想我有办法在数据帧上的 pyspark 中执行此操作(以防对任何人有用)。

所以如果数据看起来像:

>>> df.show(20)
+------------+----------+------+-----------+
| word|word_count|corpus|corpus_date|
+------------+----------+------+-----------+
| profession| 1|hamlet| 1600|
| augury| 1|hamlet| 1600|
|undertakings| 1|hamlet| 1600|
| surmise| 1|hamlet| 1600|
| religion| 1|hamlet| 1600|
| advanced| 1|hamlet| 1600|
| Wormwood| 1|hamlet| 1600|
| parchment| 1|hamlet| 1600|
| villany| 1|hamlet| 1600|
| digs| 1|hamlet| 1600|
| authorities| 1|hamlet| 1600|
| Popp'd| 1|hamlet| 1600|
| retrograde| 1|hamlet| 1600|
| tax'd| 1|hamlet| 1600|
| tomb| 1|hamlet| 1600|
| moral| 1|hamlet| 1600|
| foreknowing| 1|hamlet| 1600|
| dreadfully| 1|hamlet| 1600|
| parted| 1|hamlet| 1600|
| willow| 1|hamlet| 1600|
+------------+----------+------+-----------+

然后以下内容似乎可以在 [word] 字段上制作假人:

categories = df.select("word").distinct().rdd.flatMap(lambda x: x).collect()

exprs = [F.when(F.col("word") == category, 1).otherwise(0).alias(category) for category in categories]

df_dummies = df.select("word", *exprs).limit(1000)

取自(pyspark matrix with dummy variables)

最佳答案

这些可能是自原始帖子以来的新内容。 ml_功能有ml_create_dummy_variables哪个做得很好

iris_tbl <- copy_to(sc, iris)

iris_dum <- ml_create_dummy_variables(iris_tbl, "Species")

iris_dum %>% select(contains("Species")) %>% head

>
Source: query [6 x 4]
Database: spark connection master=local[4] app=lol local=TRUE

Species Species_setosa Species_versicolor Species_virginica
<chr> <dbl> <dbl> <dbl>
1 setosa 1 0 0
2 setosa 1 0 0
3 setosa 1 0 0
4 setosa 1 0 0
5 setosa 1 0 0
6 setosa 1 0 0

很遗憾他们是 <dbl>而不是 <int>但这很容易用 as.integer 修复打电话。

关于r - 在 sparklyr 中创建虚拟变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41039558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com