我很好奇 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
我实现此功能的方式是否存在问题,或者我只是访问了错误的信息?我也尝试从火花中读回数据,但无济于事。
在 sparklyr 0.6.0 中你可以使用它
x <- sdf_separate_column(oneHotDummy, column = 'output', into='new')