VectorIndexer:对类别特征进行索引然后将原始特征值转换为索引。索引后的类别特征可以帮助决策树等算法恰当的处理类别型特征,并得到较好结果。
def VectorIndexerTest(): Unit = { import org.apache.spark.ml.feature.VectorIndexer val spark: SparkSession = SparkSession.builder().appName("implicits").master("local[2]").getOrCreate() val data = spark.read.format("libsvm").load("F:/sparkData/mllib/sample_libsvm_data.txt") val indexer = new VectorIndexer() .setInputCol("features") .setOutputCol("indexed") //定义输入输出列和最大类别数为10,某一个特征 //(即某一列)中多于10个取值视为连续值 .setMaxCategories(10) val indexerModel = indexer.fit(data) val categoricalFeatures: Set[Int] = indexerModel.categoryMaps.keys.toSet println(s"Chose ${categoricalFeatures.size} " + s"categorical features: ${categoricalFeatures.mkString(", ")}") // 创建新的“索引”列,并将分类值转换为索引 val indexedData = indexerModel.transform(data) indexedData.show() }