r语言 - Sparklyr 中的单热编码函数输出



我很好奇 R 中sparklyrft_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

我实现此功能的方式是否存在问题,或者我只是访问了错误的信息?我也尝试从火花中读回数据,但无济于事。

在 sparklyr 0.6.0 中你可以使用它

x <- sdf_separate_column(oneHotDummy, column = 'output', into='new')

最新更新