【发布时间】:2021-03-11 12:05:44
【问题描述】:
有一个带有语言列的 DF,我试图了解使用 HashingEncoder 得到的结果。
简化的 DF(DF 中有更多列):
language country
0 English US
1 English US
2 English US
3 English AU
4 Italian IT
5 Portuguese JP
6 English US
7 English AU
8 English US
9 German DE
10 French CA
11 English UK
12 English US
13 English US
14 Italian IT
15 Italian IT
16 English UK
17 English US
18 English US
19 English AU
20 English AU
21 English AU
22 Italian IT
23 English UK
24 English US
25 French FR
26 English UK
27 English US
28 English US
29 Japanese AU
30 English AU
31 English AU
32 English US
33 English AU
34 English AU
35 English UK
36 English AU
37 English UK
38 English US
39 English US
40 English US
41 English AU
42 English US
43 English UK
44 English AU
45 English AU
46 English UK
47 English US
48 English AU
49 English US
我已经使用以下代码转换了语言列:
from category_encoders.hashing import HashingEncoder
ce_hash = HashingEncoder(cols = ['language'])
df2 = ce_hash.hashing_trick(df,N=2)
df2['lang'] = df['language']
结果:
col_0 col_1 lang
0 26 7 English
1 20 13 English
2 23 10 English
3 18 15 English
4 22 11 Italian
5 19 14 Portuguese
6 20 13 English
7 19 14 English
8 19 14 English
9 19 14 German
为什么我在col_0 col_1 中得到相同语言的不同值?
更新: 当我从 DF 中删除其他列并仅保留语言列时,结果如下所示:
col_0 col_1 lang
0 1 0 English
1 1 0 English
2 1 0 English
3 1 0 English
4 0 1 Italian
5 0 1 Portuguese
6 1 0 English
7 1 0 English
8 1 0 English
9 1 0 German
我的猜测是hashing_trick 方法正在使用来自 DF 中其他列的信息。
问:如何使用散列技巧对语言类别进行编码,冲突最少?
【问题讨论】:
-
@DaniMesejo 我添加了 DF 的简化版本
-
您只是在寻找分类吗?你想做什么?
-
@AndrasDeak 我的数据受到数字和分类值的影响,有些像语言是具有高基数的类别。我正在研究散列技巧以避免稀疏数据。
标签: python pandas dataframe hash