有一个DF with language列,我试图理解使用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中删除其他列,只留下language列时,结果如下所示:
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的其他列的信息
Q:如何使用哈希技巧对语言类别进行最小冲突编码
根据Wikipedia,哈希技巧:
这里N是输出维度(上述向量中的索引数),因此为了最小化冲突,增加输出维度,例如:
输出
关于用于散列的输入列的数量,通过查看code可以看出:
基本上,它将使用输入的所有列df。散列技巧函数不使用调用对象的任何信息
最后,要自动确定输出维度的数量,请使用fit_transform:
输出
相关问题 更多 >
编程相关推荐