Spark使用VarianceThresholdSelector做数据清洗时如何组装特征列
你可以使用Spark MLlib提供的VectorAssembler组件完成多列到特征向量的组装,具体操作步骤如下:
第一步:导入依赖
import org.apache.spark.ml.feature.VectorAssembler
第二步:定义特征列并组装特征
// 指定预测目标列 val targetColumn = "col2" // 提取除目标列外的所有列作为待组装的特征列 val inputFeatureCols = originalDf.columns.filter(_ != targetColumn) // 初始化VectorAssembler val assembler = new VectorAssembler() .setInputCols(inputFeatureCols) .setOutputCol("features") // 输出列名和你原有VarianceThresholdSelector配置的特征列名保持一致即可 // 生成带特征向量列的DataFrame val dfWithFeatures = assembler.transform(originalDf)
第三步:调用原有方法
生成的dfWithFeatures已经包含符合要求的features列,直接传入你编写的varianceThreshold方法即可正常运行。
注意事项
- 如果待组装的特征列包含非数值类型(如字符串类的分类特征),需要先通过
StringIndexer、OneHotEncoder等组件转换为数值格式后再进行组装,否则会报错。 - 如果特征列存在空值,可以提前做缺失值填充/删除,也可以通过
assembler.setHandleInvalid("skip")配置自动跳过包含空值的行,避免运行报错。
内容的提问来源于stack exchange,提问作者joesan
相关产品推荐
相关产品推荐

