特征工程的特征选择
卡方验证(ChiSqSelector):卡方检验假设检验
-
首先假设特征和标签列是相关的,如果计算出来的结果差距很大,拒绝原假设,说明特征和标签列是独立的,这列特征不去选择。
-
变量进行独立性检验,如果独立性高,那么表示两者没太大关系,特征可以舍弃;
-
如果独立性小,两者相关性高,则说明该特征会对应变量产生比较大的影响,应当选择。
-
代码实战
- 代码分析:
// * 2-准备数据
val data = Seq(
(7, Vectors.dense(0.0, 0.0, 18.0, 1.0), 1.0),
(8, Vectors.dense(0.0, 1.0, 12.0, 0.0), 0.0),
(9, Vectors.dense(1.0, 0.0, 15.0, 0.1), 0.0)
)
// * 3-数据解析
val df = spark.createDataset(data).toDF("id", "features", "clicked")
// * 4-卡方验证
val sqSelector: ChiSqSelector = new ChiSqSelector()
.setNumTopFeatures(2)
.setLabelCol("clicked")
.setFeaturesCol("features")
// * 5-得到结果
println("selected 2 features:")
sqSelector.fit(df).transform(df).show(false)
- 结果分析