2017-08-29 115 views
0

我读大熊猫文档来了解pandas.get_dummies独热编码器实现pandas.get_dummies,如何阅读语法

>>> import pandas as pd 
>>> l = list('abca') 
>>> print l 
['a', 'b', 'c', 'a'] 
>>> s = pd.Series(l) 
>>> print s 
0 a 
1 b 
2 c 
3 a 

我创建了一个系列,如上图所示。

当我呼吁这个系列get_dummies,输出如下

>>> pd.get_dummies(s) 
    a b c 
0 1 0 0 
1 0 1 0 
2 0 0 1 
3 1 0 0 

是什么意思我不明白。

我们可以说这些条目的新值如下?

a --> 100 
b --> 010 
c --> 001 
a --> 100 

此外,他们是十进制还是二进制?

+1

您正在回答你自己的问题。你真的想知道什么?是的,它创建了OneHotEncodings。 –

+0

是的,我知道pandas.get_dummies创建一个热门的编码。我试图了解单热编码的功能。 – wasabi

+0

希望链接将帮助https://datascience.stackexchange.com/questions/9443/when-to-use-one-hot-encoding-vs-labelencoder-vs-dictvectorizo​​r – Wen

回答

3

dummy变量是二进制的功能。就像一个单列,说明每行是否是某件事情。当我们有一个现有的列有多个值,大于1.我们可以将这些值分为单个列,每个唯一值。每一个新列都可以表示该行具有唯一值,或者表示该行不具有该唯一值即表示该值为零。

由于s每一行只有一个值,它按理说,零和一的每一行只会有列标题,这是在s

a b c 
0 1 0 0 # 1 is under `a` which was the value in `s` for this row. 
1 0 1 0 
2 0 0 1 
3 1 0 0 
对相应行的值下一一对应的

换句话说,想想新的a列告诉你as的位置。

+0

很好的解释。非常感谢。 – wasabi

2

这是一种热门编码。

a b c 
0 1 0 0 <-- a, not b, not c in row 0 
1 0 1 0 <-- not a, b, not c in row 1 
2 0 0 1 <-- not a, not b, c in row 2 
3 1 0 0 <-- a, not b, not c in row 3 

作为另一个例子,考虑读取this

+0

好的,据我了解,热门编码功能列被三个新功能列取代。它们的值为1或0. – wasabi

+0

@ melih.tt:是的,它是针对每个可能值的二进制编码。请参阅编辑中的链接。 – FabienP