栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Pyspark特征工程--OneHotEncoderEstimator

Pyspark特征工程--OneHotEncoderEstimator

从spark版本2.4起,**OneHotEncoderEstimator已重命名为OneHotEncoder

​ 常用于StringIndexer之后,返回的新的列是一个向量

例如,对于 5 个类别,输入值 2.0 将映射到 [0.0, 0.0, 1.0, 0.0] 的输出向量。

独热编码(One-Hot Encoding)

将表示为标签索引的分类特征映射到二进制向量,该向量最多具有一个单一的单值,该单值表示所有特征值集合中特定特征值的存在。此编码允许期望连续特征(例如逻辑回归)的算法使用分类特征。对于字符串类型的输入数据,通常首先使用StringIndexer对分类特征进行编码OneHotEncoderEstimator可以转换多列,为每个输入列返回一个热编码的输出矢量列。通常使用VectorAssembler将这些向量合并为单个特征向量。OneHotEncoderEstimator支持handleInvalid参数,以选择在转换数据期间如何处理无效输入。可用的选项包括“keep”(将任何无效输入分配给额外的分类索引)和“error”(引发错误)。

01.导入模块生成对象:

from pyspark.sql import SparkSession
from pyspark.ml.feature import oneHotEncoderEstimator
spark = SparkSession.builder.config("spark.driver.host","192.168.1.4")
    .config("spark.ui.showConsoleProgress","false")
    .master("local[*]").appName("OneHotEncoderEstimator").getOrCreate()
sc = spark.sparkContext

02.构建数据

​ 输入的列的数据需要是double类型:

data = spark.createDataframe([
    ("hadoop",3.0),
    ("spark",4.0),
    ("flink",0.0),
    ("kafka",1.0),
    ("java",2.0),
    ("flink",0.0),
    ("kafka",1.0),
    ("python",5.0)
], ["key", "value"])
data.show()
data.printSchema()

​ 输出结果:

+------+-----+
|   key|value|
+------+-----+
|hadoop|  3.0|
| spark|  4.0|
| flink|  0.0|
| kafka|  1.0|
|  java|  2.0|
| flink|  0.0|
| kafka|  1.0|
|python|  5.0|
+------+-----+

root
 |-- key: string (nullable = true)
 |-- value: double (nullable = true)

03.使用OneHotEncoderEstimator转换器

model = oneHotEncoderEstimator.fit(data)
res = model.transform(data)
res.show()

​ 输出结果:

+------+-----+-------------+
|   key|value|          res|
+------+-----+-------------+
|hadoop|  3.0|(5,[3],[1.0])|
| spark|  4.0|(5,[4],[1.0])|
| flink|  0.0|(5,[0],[1.0])|
| kafka|  1.0|(5,[1],[1.0])|
|  java|  2.0|(5,[2],[1.0])|
| flink|  0.0|(5,[0],[1.0])|
| kafka|  1.0|(5,[1],[1.0])|
|python|  5.0|    (5,[],[])|
+------+-----+-------------+

04.查看输出列的类型:

res.printSchema()

​ 输出结果:

root
 |-- key: string (nullable = true)
 |-- value: double (nullable = true)
 |-- res: vector (nullable = true)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号