【问题标题】:One-hot Encoding function output in SparklyrSparklyr 中的 One-hot 编码函数输出
【发布时间】:2017-12-09 05:55:16
【问题描述】:

我很好奇 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_encoderml_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


【解决方案1】:

在 sparklyr 0.6.0 中你可以使用这个

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2019-11-18
    • 2021-11-02
    • 2017-11-06
    • 2017-06-21
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多