【问题标题】: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”。