Spark Mlib中的SelectKBest fclass_if替代

问题描述

我正在尝试将代码从Python转换为Scala,我陷入了scikit-learn中存在的函数中,而在Scala Spark中找不到它

selector= SelectKBest(k=1).fit(X=x,y=y)

文档中的

https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html 它表示认值为认值为f_classif

Spark Mlib文档:http://spark.apache.org/docs/latest/ml-features.html#feature-selectors

  • VectorSlicer
  • RFormula
  • ChiSqSelector

在Scala中是否有任何其他程序包可以基于Anova f检验(f_classif)选择Top k?

解决方法

在我看来,您有两个选择:

a)只需等到2021年Spark版本3.1发行。

查看源代码,并且ANOVASelector已经实现,请参阅:

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/ml/feature/ANOVASelector.scala

@Since("3.1.0")
final class ANOVASelector @Since("3.1.0")(@Since("3.1.0") override val uid: String)   

它还没有发布。

有关发布窗口,请参见https://spark.apache.org/versioning-policy.html

Spark 3.1发布窗口

日期事件

2020年12月上旬代码冻结。释放分支剪切。

2020年12月中旬质量检查期。专注于错误修复,测试,稳定性和文档。

通常,不会合并任何新功能。

2021年1月上旬发布候选人(RC),投票等,直到最终发布通过

b)从github获取源代码并添加到您的代码中/自己编译最新的Spark版本

当然,后期选项仍然会帮您完成一些工作……

希望这个答案可以对您有所帮助。