特征工程的特征选择

卡方验证(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)
  • 结果分析
posted @ 2020-03-01 11:22  我の女王  阅读(191)  评论(0编辑  收藏  举报