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


Python pyspark FeatureHasher用法及代码示例


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

用法:

class pyspark.ml.feature.FeatureHasher(*, numFeatures=262144, inputCols=None, outputCol=None, categoricalCols=None)

特征散列将一组分类或数字特征投影到指定维度的特征向量中(通常远小于原始特征空间的特征向量)。这是使用散列技巧 (https://en.wikipedia.org/wiki/Feature_hashing) 将特征映射到特征向量中的索引来完成的。

FeatureHasher 转换器在多个列上运行。每列可以包含数字或分类特征。列数据类型的行为和处理如下:

  • 数值列:

    对于数字特征,列名的哈希值用于将特征值映射到其在特征向量中的索引。默认情况下,数字特征不被视为分类(即使它们是整数)。要将它们视为分类,请在 categoricalCols 中指定相关列。

  • 字符串列:

    对于分类特征,字符串 “column_name=value” 的哈希值用于映射到向量索引,指标值为 1.0 。因此,分类特征是 “one-hot” 编码的(类似于使用 OneHotEncoder dropLast=false )。

  • 布尔列:

    布尔值的处理方式与字符串列相同。也就是说,布尔特征表示为“column_name=true”或“column_name=false”,指标值为1.0

Null(缺失)值被忽略(在结果特征向量中隐式为零)。

由于使用简单的模将散列函数转换为向量索引,因此建议使用 2 的幂作为 numFeatures 参数;否则特征将不会均匀地映射到向量索引。

2.3.0 版中的新函数。

例子

>>> data = [(2.0, True, "1", "foo"), (3.0, False, "2", "bar")]
>>> cols = ["real", "bool", "stringNum", "string"]
>>> df = spark.createDataFrame(data, cols)
>>> hasher = FeatureHasher()
>>> hasher.setInputCols(cols)
FeatureHasher...
>>> hasher.setOutputCol("features")
FeatureHasher...
>>> hasher.transform(df).head().features
SparseVector(262144, {174475: 2.0, 247670: 1.0, 257907: 1.0, 262126: 1.0})
>>> hasher.setCategoricalCols(["real"]).transform(df).head().features
SparseVector(262144, {171257: 1.0, 247670: 1.0, 257907: 1.0, 262126: 1.0})
>>> hasherPath = temp_path + "/hasher"
>>> hasher.save(hasherPath)
>>> loadedHasher = FeatureHasher.load(hasherPath)
>>> loadedHasher.getNumFeatures() == hasher.getNumFeatures()
True
>>> loadedHasher.transform(df).head().features == hasher.transform(df).head().features
True

相关用法


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