特征变化--->标签到向量的转换(OneHotEncoder)
一、One-Hot Encoding
- 性别:["male","female"]
- 地区:["Europe","US","Asia"]
- 浏览器:["Firefox","Chrome","Safari","Internet Explorer"]
对于某一个样本,如["male","US","Internet Explorer"],我们需要将这个分类值的特征数字化,最直接的方法,我们可以采用序列化的方式:[0,1,3]。但是这样的特征处理并不能直接放入机器学习算法中。
二、One-Hot Encoding的处理方法
One-Hot Encoding 作用也就是为了将特征数字化为一个特征向量
package Spark_MLlib import org.apache.spark.ml.feature.{OneHotEncoder, StringIndexer}
import org.apache.spark.sql.SparkSession object 特征变换_OneHotEncoder {
val spark=SparkSession.builder().master("local[2]").appName("IndexToString").getOrCreate()
import spark.implicits._ def main(args: Array[String]): Unit = {
val df=spark.createDataFrame(Seq(
(0,"log"),
(1,"text"),
(2,"text"),
(3,"soyo"),
(4,"text"),
(5,"log"),
(6,"log"),
(7,"log"),
(8,"hadoop")
)).toDF("id","label")
val df2=spark.createDataFrame(Seq(
(0,"log"),
(1,"soyo"),
(2,"soyo")
)).toDF("id","label")
val indexer=new StringIndexer().setInputCol("label").setOutputCol("label_index")
val model=indexer.fit(df)
val indexed1=model.transform(df)//这里测试数据用的是df
indexed1.show()
val indexed=model.transform(df2)//测试数据换为df2
val encoder=new OneHotEncoder().setInputCol("label_index").setOutputCol("lable_vector").setDropLast(false) //setDropLast:被编码为全0向量的标签也可以占有一个二进制特征
val encodered1=encoder.transform(indexed1)
encodered1.show()
val encodered=encoder.transform(indexed)//(4,[2],[1.0]) //这里的4表示训练数据中有4中类型的标签
encodered.show()
}
}
结果:
+---+------+-----------+
| id| label|label_index|
+---+------+-----------+
| 0| log| 0.0|
| 1| text| 1.0|
| 2| text| 1.0|
| 3| soyo| 2.0|
| 4| text| 1.0|
| 5| log| 0.0|
| 6| log| 0.0|
| 7| log| 0.0|
| 8|hadoop| 3.0|
+---+------+-----------+
+---+------+-----------+-------------+
| id| label|label_index| lable_vector|
+---+------+-----------+-------------+
| 0| log| 0.0|(4,[0],[1.0])|
| 1| text| 1.0|(4,[1],[1.0])|
| 2| text| 1.0|(4,[1],[1.0])|
| 3| soyo| 2.0|(4,[2],[1.0])|
| 4| text| 1.0|(4,[1],[1.0])|
| 5| log| 0.0|(4,[0],[1.0])|
| 6| log| 0.0|(4,[0],[1.0])|
| 7| log| 0.0|(4,[0],[1.0])|
| 8|hadoop| 3.0|(4,[3],[1.0])|
+---+------+-----------+-------------+
+---+-----+-----------+-------------+
| id|label|label_index| lable_vector|
+---+-----+-----------+-------------+
| 0| log| 0.0|(4,[0],[1.0])|
| 1| soyo| 2.0|(4,[2],[1.0])|
| 2| soyo| 2.0|(4,[2],[1.0])|
+---+-----+-----------+-------------+
特征变化--->标签到向量的转换(OneHotEncoder)的更多相关文章
- 特征变化--->标签到索引的转换(StringIndexer)
package Spark_MLlib import org.apache.spark.ml.feature.StringIndexer import org.apache.spark.sql.Spa ...
- spark机器学习从0到1特征变换-标签和索引的转化(十六)
一.原理 在机器学习处理过程中,为了方便相关算法的实现,经常需要把标签数据(一般是字符串)转化成整数索引,或是在计算结束后将整数索引还原为相应的标签. Spark ML 包中提供了几个相关的转换器 ...
- 特征变化--->索引到标签的转换(IndexToString)
package Spark_MLlib import org.apache.spark.ml.feature.{IndexToString, StringIndexer} import org.apa ...
- 特征变化--->特征向量中部分特征到类别索引的转换(VectorIndexer)
VectorIndexer: 倘若所有特征都已经被组织在一个向量中,又想对其中某些单个分量进行处理时,Spark ML提供了VectorIndexer类来解决向量数据集中的类别性特征转换. 通过为其提 ...
- kinect脸部三维数据特征点标签语义具体说明
非常多零零碎碎的事情,导致非常久没写blog了.face animation的demo做完了也快一个月了.是时候总结总结了. Kinect获得的标识点共用121个.其给的sdk里面也给出了响应的标签. ...
- 利用艺术家的整数ID映射将标签转换为向量
<strong><span style="font-size:18px;">/*** * @author YangXin * @info Mapper选择艺 ...
- 条件GAN论文简单解读
条件GAN(Conditional Generative Adversarial Nets),原文地址为CGAN. Abstract 生成对抗网络(GAN)是最近提出的训练生成模型(g ...
- 机器学习入门-文本特征-使用LDA主题模型构造标签 1.LatentDirichletAllocation(LDA用于构建主题模型) 2.LDA.components(输出各个词向量的权重值)
函数说明 1.LDA(n_topics, max_iters, random_state) 用于构建LDA主题模型,将文本分成不同的主题 参数说明:n_topics 表示分为多少个主题, max_i ...
- 谁动了我的特征?——sklearn特征转换行为全记录
目录 1 为什么要记录特征转换行为?2 有哪些特征转换的方式?3 特征转换的组合4 sklearn源码分析 4.1 一对一映射 4.2 一对多映射 4.3 多对多映射5 实践6 总结7 参考资料 1 ...
随机推荐
- canvas练手项目(三)——Canvas中的Text文本
Canvas中的Text文本也是一个知识点~,我们需要掌握一下几个基本的Text操作方法 首先是重要参数textAlign和textBaseline: textAlign left center ri ...
- P1060 开心的金明(洛谷,动态规划递推,01背包轻微变形题)
题目链接:P1060 开心的金明 基本思路: 基本上和01背包原题一样,不同点在于这里要的是最大重要度*价格总和,我们之前原题是 f[j]=max(f[j],f[j-v[i]]+p[i]); 那么这里 ...
- Luogu P2176 [USACO14FEB]路障Roadblock
解题思路 这是一道最短路题目,不知道大家有没有做过玛丽卡这道题目,如果没做,在做完这道题之后可以去拿个双倍经验哦 先求出一张图中的最短路径,并将其记录下来,我们首先思考:要有增量的前提是新的最短路径比 ...
- fread快读+fwrite快速输出
定义数组 char buf[1<<23],*p1=buf,*p2=buf,obuf[1<<23],*O=obuf; 读入 #define getchar() (p1==p2&a ...
- db2构建临时结果集
一 values ('1',2,3) 为一行 ‘1’ 2 3 行数据类型可以不同 values ('1',2,3),('f',5,6) 为两行 (values 1,2,3 ...
- 洛谷 1541 NOIp2010提高组 乌龟棋
[题解] 很容易想到这是一个DP,f[i][j][k][l]表示4种卡片分别用了多少张,那么转移方程就是f[i][j][k][l]=Max(f[i-1][j][k][l],f[i][j-1][k][l ...
- springcloud(十四):搭建Zuul微服务网关
springcloud(十四):搭建Zuul微服务网关 1. 2. 3. 4.
- idea 快捷键设置
通过 点击放大镜然后按当前需要修改的快捷键找到需要修改的快捷键,更改成希望的快捷键
- Entity SQL rules for Wrapped and Unwrapped Results
Here are some rules to remember for Entity SQL queries: 1.Use SELECT VALUE when projecting more than ...
- 升级 HTTPS,价值何在?
HTTPS 实质上是一种面向安全信息通信的协议.从最终的数据解析的角度上看,HTTPS 与 HTTP 没有本质上的区别.对于接收端而言,SSL/TSL 将接收的数据包解密,将数据传给 HTTP 协议层 ...