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


Python pyspark OneHotEncoder用法及代码示例


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

用法:

class pyspark.ml.feature.OneHotEncoder(*, inputCols=None, outputCols=None, handleInvalid='error', dropLast=True, inputCol=None, outputCol=None)

one-hot 编码器,将一列类别索引映射到一列二进制向量,每行最多有一个 one-value 指示输入类别索引。例如,对于 5 个类别,输入值 2.0 将映射到输出向量 [0.0, 0.0, 1.0, 0.0] 。默认情况下不包括最后一个类别(可通过 dropLast 配置),因为它使向量条目总和为 1,因此呈线性相关。因此输入值 4.0 映射到 [0.0, 0.0, 0.0, 0.0]

handleInvalid配置为‘keep’时,将添加指示无效值的额外“category”作为最后一个类别。因此,当 dropLast 为 true 时,无效值将被编码为 all-zeros 向量。

2.3.0 版中的新函数。

注意

这与 scikit-learn 的 OneHotEncoder 不同,后者保留所有类别。输出向量是稀疏的。

当使用 inputColsoutputCols 参数对 multi-column 进行编码时,输入/输出列成对出现,按数组中的顺序指定,并且每对都被独立处理。

例子

>>> from pyspark.ml.linalg import Vectors
>>> df = spark.createDataFrame([(0.0,), (1.0,), (2.0,)], ["input"])
>>> ohe = OneHotEncoder()
>>> ohe.setInputCols(["input"])
OneHotEncoder...
>>> ohe.setOutputCols(["output"])
OneHotEncoder...
>>> model = ohe.fit(df)
>>> model.setOutputCols(["output"])
OneHotEncoderModel...
>>> model.getHandleInvalid()
'error'
>>> model.transform(df).head().output
SparseVector(2, {0: 1.0})
>>> single_col_ohe = OneHotEncoder(inputCol="input", outputCol="output")
>>> single_col_model = single_col_ohe.fit(df)
>>> single_col_model.transform(df).head().output
SparseVector(2, {0: 1.0})
>>> ohePath = temp_path + "/ohe"
>>> ohe.save(ohePath)
>>> loadedOHE = OneHotEncoder.load(ohePath)
>>> loadedOHE.getInputCols() == ohe.getInputCols()
True
>>> modelPath = temp_path + "/ohe-model"
>>> model.save(modelPath)
>>> loadedModel = OneHotEncoderModel.load(modelPath)
>>> loadedModel.categorySizes == model.categorySizes
True
>>> loadedModel.transform(df).take(1) == model.transform(df).take(1)
True

相关用法


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