import org.apache. spark.mllib.linalg.{Vector,Vectors}import org.apache.spark.ml.feature.OneHotEncoder import org. apache.spark.ml.Pipeline val tovec = udf[Vector,Double] { (a) => Vectors.dense(a)} val encodeFamHist = udf[Double, String]( _ match { case "Absent" => 0.0 case "Present" => 1.0}) val data = base.withColumn("famhist",encodeFamHist('famhist)).withColumn("chd",'chd.cast("Double")) val chdEncoder = new OneHotEncoder().setInputCol("chd").set0utputCol("chd_categorical") val famhistencoder = new OneHotEncoder().setInputCol("famhist").set0utputCol("famhist_categorical") val pipeline = new Pipeline().setStages(Array(chdEncoder, famhistEncoder)) val encoded = pipeline.fit(data).transform(data)
时间: 2024-02-29 16:54:54 浏览: 215
one-hot编码
可以看出这是一个Spark的代码段,主要是对数据进行处理和编码。首先定义了一个tovec函数,将输入的Double类型数据转换为Spark的Vector类型。然后定义了一个encodeFamHist函数,将输入的字符串类型数据("Absent"或"Present")编码为0或1。接着将数据集中的"famhist"列使用encodeFamHist函数进行编码,并将"chd"列转换为Double类型。然后定义了两个OneHotEncoder对象,分别用于对"chd"列和"famhist"列进行独热编码。最后使用Pipeline对象将这两个编码器串联起来,对数据集进行编码。
阅读全文