【问题标题】:ApacheSparkML StringIndexer eats my columnsApacheSparkML StringIndexer 吃掉我的列
【发布时间】:2017-09-25 12:23:45
【问题描述】:

将 StringIndexer 应用于包含以下列的 df_notnull(DataFrame 对象)时:

scala> df_notnull.printSchema
root
 |-- L0_S22_F545: string (nullable = true)
 |-- L0_S0_F0: double (nullable = true)
 |-- L0_S0_F2: double (nullable = true)
 |-- L0_S0_F4: double (nullable = true)

只剩下那些了:

scala> indexed.printSchema
root
 |-- L0_S22_F545: string (nullable = true)
 |-- L0_S22_F545Index: double (nullable = true)

这是我的代码:

:paste
import org.apache.spark.ml.feature.{OneHotEncoder, StringIndexer}

val indexer = new StringIndexer()
  .setInputCol("L0_S22_F545")
  .setOutputCol("L0_S22_F545Index")

val indexed = indexer.fit(df_notnull).transform(df_notnull)
indexed.printSchema

我想保留所有列,只添加一些新列。我做错了什么?

【问题讨论】:

    标签: apache-spark apache-spark-sql apache-spark-ml


    【解决方案1】:

    找到解决方案here。实际上,转换器不应单独使用,而应与管道一起使用 - 然后保留列:

    import org.apache.spark.ml.Pipeline
    val transformers = Array(
        indexer,
        encoder
    )
    
    var pipeline = new Pipeline().setStages(transformers).fit(df_notnull)
    
    var transformed = pipeline.transform(df_notnull)
    

    结果如下所示:

    scala> transformed.show
    +-----------+--------+--------+--------+----------------+--------------+        
    |L0_S22_F545|L0_S0_F0|L0_S0_F2|L0_S0_F4|L0_S22_F545Index|L0_S22_F545Vec|
    +-----------+--------+--------+--------+----------------+--------------+
    |         NA|    0.03|  -0.034|  -0.197|             0.0|(13,[0],[1.0])|
    |         NA|     0.0|     0.0|     0.0|             0.0|(13,[0],[1.0])|
    |         NA|   0.088|   0.086|   0.003|             0.0|(13,[0],[1.0])|
    |         NA|  -0.036|  -0.064|   0.294|             0.0|(13,[0],[1.0])|
    |         NA|  -0.055|  -0.086|   0.294|             0.0|(13,[0],[1.0])|
    |         NA|   0.003|   0.019|   0.294|             0.0|(13,[0],[1.0])|
    |         NA|     0.0|     0.0|     0.0|             0.0|(13,[0],[1.0])|
    |         NA|     0.0|     0.0|     0.0|             0.0|(13,[0],[1.0])|
    |         NA|  -0.016|  -0.041|  -0.179|             0.0|(13,[0],[1.0])|
    |         NA|     0.0|     0.0|     0.0|             0.0|(13,[0],[1.0])|
    |         NA|   0.016|   0.093|  -0.015|             0.0|(13,[0],[1.0])|
    |         NA|  -0.062|  -0.153|  -0.197|             0.0|(13,[0],[1.0])|
    |         NA|  -0.075|  -0.093|   0.367|             0.0|(13,[0],[1.0])|
    |         NA|  -0.003|  -0.093|  -0.161|             0.0|(13,[0],[1.0])|
    |         NA|  -0.016|  -0.138|  -0.197|             0.0|(13,[0],[1.0])|
    |         NA|   0.252|    0.25|   0.003|             0.0|(13,[0],[1.0])|
    |         NA|     0.0|     0.0|     0.0|             0.0|(13,[0],[1.0])|
    |         NA|  -0.016|  -0.041|   0.003|             0.0|(13,[0],[1.0])|
    |         NA|     0.0|     0.0|     0.0|             0.0|(13,[0],[1.0])|
    |         NA|   0.088|   0.033|    0.33|             0.0|(13,[0],[1.0])|
    +-----------+--------+--------+--------+----------------+--------------+
    only showing top 20 rows
    

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2020-11-08
      相关资源
      最近更新 更多