码迷,mamicode.com
首页 > Web开发 > 详细

特征抽取--标签与索引的转化: OneHotEncoder

时间:2018-08-17 12:13:45      阅读:423      评论:0      收藏:0      [点我收藏+]

标签:导入   模型   for   session   bsp   master   nsf   .sh   create   

?独热编码(One-Hot Encoding) 是指把一列类别性特征(或称名词性特征,nominal/categorical features)映射成一系列的二元

连续特征的过程,原有的类别性特征有几种可能取值,这一特征就会被映射成几个二元连续特征,每一个特征代表一种取值,若该样

本表现出该特征,则取1,否则取0。

One-Hot编码适合一些期望类别特征为连续特征的算法,比如说逻辑斯蒂回归等。

首先创建一个DataFrame,其包含一列类别性特征,需要注意的是,在使用OneHotEncoder进行转换前,DataFrame需要先使用

StringIndexer将原始标签数值化:

#导入相关的类库
from pyspark.sql import SparkSession
from pyspark.ml.feature import OneHotEncoder,StringIndexer
#创建SparkSession对象,配置spark
spark = SparkSession.builder.master(‘local‘).appName(‘OneHotEncoderDemo‘).getOrCreate()
#创建一个简单的DataFrame训练集
df = spark.createDataFrame([
(0, "a"),
(1, "b"),
(2, "c"),
(3, "a"),
(4, "a"),
(5, "c")
], ["id", "category"])
#创建StringIndexer对象,设置输入输出参数
indexer = StringIndexer(inputCol=‘category‘, outputCol=‘categoryIndex‘)
#生成训练模型
model = indexer.fit(df)
#利用生成的model对DataFrame进行转换
indexed = model.transform(df)
#创建OneHotEncoder对象,设置输入输出参数
onehotencoder = OneHotEncoder(inputCol=‘categoryIndex‘, outputCol=‘categoryVec‘)
#我们创建OneHotEncoder对象对处理后的DataFrame进行编码,可以看见,编码后的二进制特征呈稀疏
#向量形式,与StringIndexer编码的顺序相同,需注意的是最后一个Category(”b”)被编码为全0向
#量,若希望”b”也占有一个二进制特征,则可在创建OneHotEncoder时指定setDropLast(false)。
oncoded = onehotencoder.transform(indexed)
oncoded.show()
技术分享图片

 

特征抽取--标签与索引的转化: OneHotEncoder

标签:导入   模型   for   session   bsp   master   nsf   .sh   create   

原文地址:https://www.cnblogs.com/SoftwareBuilding/p/9492310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!