当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python pyspark UnivariateFeatureSelector用法及代码示例

本文简要介绍 pyspark.ml.feature.UnivariateFeatureSelector 的用法。

用法:

class pyspark.ml.feature.UnivariateFeatureSelector(*, featuresCol='features', outputCol=None, labelCol='label', selectionMode='numTopFeatures')

基于针对标签的单变量统计测试的特征选择器。目前,Spark 支持三种单变量特征选择器:卡方、ANOVA F-test 和 F-value。用户可以通过设置 featureTypelabelType 来选择单变量特征选择器,Spark 将根据指定的 featureTypelabelType 选择评分函数。

支持以下 featureTypelabelType 的组合:

  • featureType categoricallabelType categorical ,Spark 使用卡方,即 sklearn 中的 chi2。

  • featureType continuouslabelType categorical ,Spark 使用 ANOVA F-test,即 sklearn 中的 f_classif。

  • featureType continuouslabelType continuous ,Spark使用F-value,即sklearn中的f_regression。

UnivariateFeatureSelector 支持不同的选择模式: numTopFeaturespercentilefprfdrfwe

  • numTopFeatures 根据一个假设选择固定数量的顶级特征。

  • percentile 类似,但选择所有特征的一小部分而不是固定数量。

  • fpr 选择 p 值低于阈值的所有特征,从而控制选择的误报率。

  • fdr 使用 Benjamini-Hochberg procedure 选择错误发现率低于阈值的所有特征。

  • fwe 选择 p 值低于阈值的所有特征。阈值按 1 /numFeatures 缩放,从而控制 family-wise 选择错误率。

默认情况下,选择模式为 numTopFeatures

版本 3.1.1 中的新函数。

例子

>>> from pyspark.ml.linalg import Vectors
>>> df = spark.createDataFrame(
...    [(Vectors.dense([1.7, 4.4, 7.6, 5.8, 9.6, 2.3]), 3.0),
...     (Vectors.dense([8.8, 7.3, 5.7, 7.3, 2.2, 4.1]), 2.0),
...     (Vectors.dense([1.2, 9.5, 2.5, 3.1, 8.7, 2.5]), 1.0),
...     (Vectors.dense([3.7, 9.2, 6.1, 4.1, 7.5, 3.8]), 2.0),
...     (Vectors.dense([8.9, 5.2, 7.8, 8.3, 5.2, 3.0]), 4.0),
...     (Vectors.dense([7.9, 8.5, 9.2, 4.0, 9.4, 2.1]), 4.0)],
...    ["features", "label"])
>>> selector = UnivariateFeatureSelector(outputCol="selectedFeatures")
>>> selector.setFeatureType("continuous").setLabelType("categorical").setSelectionThreshold(1)
UnivariateFeatureSelector...
>>> model = selector.fit(df)
>>> model.getFeaturesCol()
'features'
>>> model.setFeaturesCol("features")
UnivariateFeatureSelectorModel...
>>> model.transform(df).head().selectedFeatures
DenseVector([7.6])
>>> model.selectedFeatures
[2]
>>> selectorPath = temp_path + "/selector"
>>> selector.save(selectorPath)
>>> loadedSelector = UnivariateFeatureSelector.load(selectorPath)
>>> loadedSelector.getSelectionThreshold() == selector.getSelectionThreshold()
True
>>> modelPath = temp_path + "/selector-model"
>>> model.save(modelPath)
>>> loadedModel = UnivariateFeatureSelectorModel.load(modelPath)
>>> loadedModel.selectedFeatures == model.selectedFeatures
True
>>> loadedModel.transform(df).take(1) == model.transform(df).take(1)
True

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.ml.feature.UnivariateFeatureSelector。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。