首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解sklearn

理解sklearn
EN

Data Science用户
提问于 2020-04-19 09:43:28
回答 1查看 1.7K关注 0票数 1

为了理解“哈希技巧”,我编写了以下测试代码:

代码语言:javascript
复制
import pandas as pd
from sklearn.feature_extraction import FeatureHasher
test = pd.DataFrame({'type': ['a', 'b', 'c', 'd', 'e','f','g','h']})
h = FeatureHasher(n_features=4, input_type='string')
f = h.transform(test.type)
print(f.toarray())

在上面的示例中,我将8个类别映射为4列,输出如下:

代码语言:javascript
复制
[[ 0.  0.  1.  0.]<-a
 [ 0. -1.  0.  0.]<-b
 [ 0. -1.  0.  0.]<-c
 [ 0.  0.  0.  1.]<-d
 [ 0.  0.  0.  1.]<-e
 [ 0.  0.  0.  1.]<-f
 [ 0.  0. -1.  0.]<-g
 [ 0. -1.  0.  0.]]<-g

在得到的矩阵中,我可以看到重复,一些类别也是用同样的方式表示的。为什么?如果我使用二进制表示,8个类别可以映射到4列中。

请有人解释一下这项技术的输出,也许可以再详细说明一下吗?

EN

回答 1

Data Science用户

发布于 2020-04-21 02:23:42

FeatureHasher将每个令牌分配给输出中的单个列;它不执行允许您忠实地将更多特性编码到较小空间的二进制编码。相反,重点是您不必像在OneHotEncoder中那样查找给定类别映射到哪一列:您只需将哈希函数应用于该值。使用低维目标空间可以保证碰撞,但即使是较大的目标空间也可能产生一些碰撞。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/72569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档