【发布时间】:2017-12-09 05:55:16
【问题描述】:
我很好奇 R 中 sparklyr 中 ft_one_hot_encoder 函数的输出。我尝试实现它以找到我无法使用的输出,然后改用 ml_create_dummy_variables。
我有一些简单的测试数据和有效的火花连接:
require(dplyr)
require(sparklyr)
spark_connection<-spark_connect(master = 'yarn-client'
oneHotTest<-data.frame(a=c(1,2,1,3), b=rnorm(4))
> oneHotTest
a b
1 1 2.2221345
2 2 0.2010831
3 1 0.5932860
4 3 0.7223811
然后我可以复制数据并应用ft_one_hot_encoder 和ml_create_dummy_variables 函数:
oneHotTable<-copy_to(spark_connection, oneHotTest)
oneHotEncode<-ft_one_hot_encoder(oneHotTable, input.col = 'a', output.col = 'output')
oneHotDummy<-ml_create_dummy_variables(oneHotTable, 'a')
结果如下,ml_create dummy variables 给了我想要的输出:
> oneHotDummy
Source: table<sparklyr_tmp_211f7b4485f4> [?? x 5]
Database: spark_connection
a b a_1 a_2 a_3
<chr> <dbl> <dbl> <dbl> <dbl>
1 1 -0.1524646 1 0 0
2 2 -0.5914959 0 1 0
3 1 -0.9588067 1 0 0
4 3 -1.5186872 0 0 1
ft_one_hot_encoder 给我的输出列是NULL,但我无法使用:
> oneHotEncode
Source: table<sparklyr_tmp_211f3897a9c1> [?? x 3]
Database: spark_connection
a b output
<dbl> <dbl> <list>
1 1 -0.7109400 <dbl [3]>
2 2 -0.9688218 <dbl [3]>
3 1 1.1678944 <dbl [3]>
4 3 0.6903080 <dbl [3]>
> oneHotEncode$output
NULL
我实现此功能的方式是否存在问题,或者我只是访问了错误的信息?我也尝试过从 spark 读取数据,但无济于事。
【问题讨论】:
-
将
ft_one_hot_encoder()更改为output.col = NULL会得到什么? -
Error in ensure_scalar_character(output.col) : 'NULL' is not a length-one character vector
标签: r apache-spark dplyr sparklyr one-hot-encoding