一位有效编码(独热编码)
来源:互联网 发布:网络工程项目期中考试 编辑:程序博客网 时间:2024/06/04 23:32
简单介绍
有一组数据,其中有个特征是性别。既然是性别,那它的值显然只有两个选择,要么男性(用1表示)要么女性(用0表示)。
独热编码就是将这一个特征变成两个特征:是男性、是女性。
我是男的,我的特征就变成了 [1, 0],1代表我是男的,0代表我不是女的。同样,女性的特征变为[0, 1]。
用处
为什么用独热编码?
假设一个特征是颜色,选项有:黄色、红色、绿色等等。如果我们不采用独热编码,用0表示黄色,用1表示绿色,用2表示红色,以此类推。从数学上看,它们之间的距离不一样了,0和1的距离显然比0和2的距离小,可是不能认为黄色与红色的关系比绿色更接近。
采用独热编码后,黄色变成[1, 0, 0 , … ],红色变成[0, 1, 0, … ],绿色变成[0, 0, 1, … ],这样它们的相似度就一样了,这对机器学习算法很重要。
怎么用
以性别为例,有两个人,一男一女。他们原始属性是[1]和[0]。
from sklearn.preprocessing import OneHotEncoder # 利用sklearnenc = OneHotEncoder()test=[[1],[0]]enc.fit(test) # 调用函数
完成了,就是这么简单。
我们来预测一下
enc.transform([[1]]).toarray()
输出是
array([[ 0., 1.]])
有点简单唉,再复杂点,加上颜色属性,假设有三个人:
A 男性、红色衣服 [1 ,1 ]
B 男性、黄色衣服 [1 ,0 ]
C 女性、绿色衣服 [0 ,2 ]
在这三人的属性的基础上进行独热编码,编码成功后,看看D 女性、红色衣服会被编码成什么样子
test2=[[1,1],[1,0],[0,2]]enc.fit(test2) enc.transform([[0,1]]).toarray()
Out:
array([[ 1., 0., 0., 1., 0.]])
有五列数据,分别代表:女性、男性、黄色、红色、绿色。这是从A、B,C三人中得到的规律。
1代表是,0代表不是,很容易看出结果表示的是 女性、红色。
Pandas
依旧以年龄和颜色为例,我已经有了一堆数据,怎样快速地编码呢。
先做一个表格
import pandas as pd from pandas import Series,DataFramedf=pd.DataFrame({'sex': [1, 1, 0, 1], 'color': [1, 0, 2, 1]})df
Out:
color sex0 1 11 0 12 2 03 1 1
In:
s1 = pd.get_dummies(df['sex'], prefix = 'sex')s1
Out:
sex_0 sex_10 0 11 0 12 1 03 0 1
In:
s2 = pd.get_dummies(df['color'], prefix = 'color')s2
Out:
Out[21]: color_0 color_1 color_20 0 1 01 1 0 02 0 0 1
In:
pd.concat([s1, s2],axis=1)
Out:
sex_0 sex_1 color_0 color_1 color_20 0 1 0 1 01 0 1 1 0 02 1 0 0 0 13 0 1 0 1 0
也可以同时对多个特征编码,结果是一样的
pd.get_dummies(df, columns=["color","sex"])
- 一位有效编码(独热编码)
- 独热编码
- 独热编码
- 独热编码 OneHotEncoder()
- one-hot coding(热独编码)
- ont-hot (独热)编码
- 独热编码(One-Hot Encoding)
- 独热编码(One-Hot Encoding)
- 数据预处理之独热编码(One-Hot Encoding)
- 数据预处理之独热编码(One-Hot Encoding)
- 数据预处理:独热编码(One-Hot Encoding)
- 独热编码(One-Hot Encoding)介绍及实现
- 数据预处理:独热编码(One-Hot Encoding)
- One-Hot Encoding独热编码
- 数据预处理之独热编码
- 独热编码(One-Hot Encoding)
- one-hot独热编码问题
- pandas使用get_dummyies()进行独热编码
- QNX 上的多线程编程
- 17 年头条笔试
- 装饰设计模式理论+推测
- Java提高—对象克隆(复制)/对象属性拷贝
- 1083. List Grades (25)
- 一位有效编码(独热编码)
- 谁能用旧cpu编程,可以使用旧cpu编程。 cpu和单片机价格比较
- 补码
- android ViewPager+Fragment ILLegalStateException Fragment Already added
- java 中输入字符的方法(顺便判断元音辅音)
- django学习——python 3.6下实现xadmin
- JSP简介以及部分指令使用
- Linux安装 VMware tools 工具的方法
- bzoj1264 [AHOI2006]基因匹配Match (树状数组优化DP)