【问题标题】:Scala- Databricks- Linear RegressionScala-Databricks-线性回归
【发布时间】:2021-09-20 13:38:02
【问题描述】:

有人可以解释一下下面代码行的含义(在 scala-databricks 中)

val categoricalIndexers = categoricalVariables
  .map(i => new StringIndexer().setHandleInvalid("skip").setInputCol(i)
                .setOutputCol(i+"Index"))

【问题讨论】:

  • 快速提示:使用代码围栏使代码更具可读性

标签: scala linear-regression databricks categorical-data


【解决方案1】:
  • StringIndexer 的目的是将标签的字符串列映射到标签索引的 ML 列(有关更多详细信息和代码,请参阅 the documentation of Apache Spark
  • 您可以使用setHandleInvalid 来选择如何使用StringIndexer 处理看不见的标签。如果您选择“跳过”设置,则将跳过包含看不见的标签的行(从输出中删除)。
  • 而代码结尾.setInputCol(i).setOutputCol(i+"Index")的目的是对字符串变量进行索引,并返回被索引的变量;索引变量的名称是原始字符串变量的名称+“索引”。例如,让我们使用字符串变量“City”。一旦字符串变量被索引,索引变量的名称将是 CityIndex。

您可以使用以下行来索引数据集的所有字符串变量:

var categoricalCols = DataSet.dtypes.filter(_._2 == "StringType").map(_._1) 

var indexOutputCols = categoricalCols.map(_ + "_Index")

// Handle string variables
var stringIndexer = new StringIndexer()
                        .setInputCols(categoricalCols)
                        .setOutputCols(indexOutputCols)
                        .setHandleInvalid("skip")

索引变量具有原始名称+“_indexed”。

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 2018-07-31
    • 2019-10-09
    • 1970-01-01
    • 2017-06-17
    • 2019-01-29
    • 2013-02-11
    • 2018-05-16
    • 1970-01-01
    相关资源
    最近更新 更多