當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。