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

?独热编码(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()

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

时间: 2024-10-17 00:44:30

特征抽取--标签与索引的转化: OneHotEncoder的相关文章

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

之前介绍的StringIndexer是针对单个类别型特征进行转换,倘若所有特征都已经被组织在一个向量中 ,又想对其中某些单个分量进行处理时,Spark ML提供了VectorIndexer类来解决向量数据集中的类别 性特征转换.通过为其提供maxCategories超参数,它可以自动识别哪些特征是类别型的,并且将原始 值转换为类别索引.它基于不同特征值的数量来识别哪些特征需要被类别化,那些取值可能性最多不超 过maxCategories的特征需要会被认为是类别型的.在下面的例子中,我们读入一个数

js 读取<select>标签选项 索引

var obj = document.getElementByIdx_x_x(”select_id”); //selectid var index = obj.selectedIndex; // 选中索引 var text = obj.options[index].text; // 选中文本 var value = obj.options[index].value; // 选中值

JS初学——添加索引匹配数组练习

1.页面布局 <div id="wrap"> <img src=""/> <span>页面数量正在加载中...</span> <p>图片说明正在加载中..</p> <ul></ul> </div> 2.添加样式 <style type="text/css"> li{list-style: none;} ul{margin: 0;

JavaScript提高:005:ASP.NET使用easyUI TABS标签显示问题

前面使用easy ui来实现了一个tabs标签(http://blog.csdn.net/yysyangyangyangshan/article/details/38307477),不过在ASP.NET中使用时发现了一个问题. 大家都知道,asp.net页面的控件,当控件的事件不是使用 "return js函数();"时,或者控件注册的是后台的事件,那么整个页面会重新加载的.此时这个easy ui实现的tabs标签,总是回到了第一个tab页.虽然可以借助ajax和jQuery的方法,来

jQuery 给class附点击事件获取对应的索引

有一类div标签,class为pointbox,数量不等,有多个.我需要在点击某一个标签的时候实时获取该标签在这类标签中索引值,以便进行其他操作. 代码很简单: $(".pointbox").click(function () {          var index=$(".pointbox").index($(this));        }); 但是很有用.

Jquery和JS获取ul中li标签

js 获取元素下面所有的li var content=document.getElementById("content"); var items=content.getElementsByTagName("ul"); var itemss=items[2].getElementsByTagName("li");//获取第二个li标签 或 var div=document.getElementById('a'); var ul=div.childN

构建了一个简单的时间序列数据集来说明索引功能

数据索引和选取 pandas对象中的轴标签信息有很多作用: 使用已知指示来确定数据(即提供元数据),这对于分析.可视化以及交互式控制台的显示都十分重要 使能够实现自动和显式的数据对齐 允许直观地获取和设置数据集的子集 在这一部分,我们将致力于最终的目的:即如何切片,切丁以及一般地获取和设置pandas对象的子集.文章将主要集中在Series和DataFrame上,因为它们潜力很大.希望未来在高维数据结构(包括panel)上投入更多的精力,尤其是在基于标签的高级索引方面. 提示:Python和bu

用户标签计算系统设计

实时计算部分参考自博文: 实时用户标签生成系统设计 用户标签系统的用途 用户分类,精准营销. 标签的定义 我司常用的标签有:新用户.老用户.流失用户.活跃用户等.此外,还可以根据用户以往行为,如投诉.订单取消.查看报价等,为用户打上相应的标签.标签系统提供了从多维度进行用户分类的方法 .在用户分类的基础上,实现差异化营销.差异化优惠,则可以节约营销成本. 标签的时效性 标签如新用户.流失用户等 ,会随用户在系统中下单而失效.而活跃用户会随着用户在系统中长期不下单而变成流失用户.通常,用户半年以前

《Pandas CookBook》---- 第五章 布尔索引

布尔索引 简书大神SeanCheney的译作,我作了些格式调整和文章目录结构的变化,更适合自己阅读,以后翻阅是更加方便自己查找吧 import pandas as pd import numpy as np 设定最大列数和最大行数 pd.set_option('max_columns',5 , 'max_rows', 5) 1 布尔值统计信息 movie = pd.read_csv('data/movie.csv', index_col='movie_title') movie.head() .