dask_ml.feature_extraction.text.FeatureHasher
dask_ml.feature_extraction.text
.FeatureHasher¶
- class dask_ml.feature_extraction.text.FeatureHasher(n_features=1048576, *, input_type='dict', dtype=<class 'numpy.float64'>, alternate_sign=True)¶
实现特征哈希,也称为哈希技巧。
这个类将符号特征名称(字符串)序列转换为 scipy.sparse 矩阵,使用哈希函数计算与名称对应的矩阵列。使用的哈希函数是 Murmurhash3 的带符号 32 位版本。
字节串类型的特征名称按原样使用。Unicode 字符串首先转换为 UTF-8,但不进行 Unicode 规范化。特征值必须是(有限的)数字。
这个类是 DictVectorizer 和 CountVectorizer 的低内存替代方案,适用于大规模(在线)学习以及内存紧张的情况,例如在嵌入式设备上运行预测代码。
要比较不同特征提取器的效率,请参阅FeatureHasher 和 DictVectorizer 比较。
在用户指南中了解更多。
0.13 版本新增。
- 参数
- n_features整数,默认值=2**20
输出矩阵中的特征(列)数量。特征数量少可能导致哈希冲突,但数量多会导致线性学习器中的系数维度更大。
- input_type字符串,默认值='dict'
从 {‘dict’, ‘pair’, ‘string’} 中选择一个字符串。“dict”(默认值)接受 (feature_name, value) 的字典;“pair”接受 (feature_name, value) 对;或者“string”接受单个字符串。feature_name 应为字符串,value 应为数字。在“string”情况下,隐含值为 1。feature_name 被哈希以找到特征的相应列。值在输出中可能会翻转符号(但请参阅下面的 non_negative)。
- dtypenumpy dtype,默认值=np.float64
特征值的类型。作为 dtype 参数传递给 scipy.sparse 矩阵构造函数。不要将其设置为 bool、np.boolean 或任何无符号整数类型。
- alternate_sign布尔值,默认值=True
当为 True 时,会在特征中添加一个交替符号,以便即使对于小的 n_features 也能近似保留哈希空间中的内积。这种方法类似于稀疏随机投影。
0.19 版本更改:
alternate_sign
替换了现已弃用的non_negative
参数。
另请参阅
DictVectorizer
使用哈希表对字符串值特征进行向量化。
sklearn.preprocessing.OneHotEncoder
处理名义/类别特征。
注意
此估计器是无状态的,无需拟合。但是,我们建议调用
fit_transform()
而非transform()
,因为参数验证仅在fit()
中执行。示例
>>> from sklearn.feature_extraction import FeatureHasher >>> h = FeatureHasher(n_features=10) >>> D = [{'dog': 1, 'cat':2, 'elephant':4},{'dog': 2, 'run': 5}] >>> f = h.transform(D) >>> f.toarray() array([[ 0., 0., -4., -1., 0., 0., 0., 0., 0., 2.], [ 0., 0., 0., -2., -5., 0., 0., 0., 0., 0.]])
当 input_type=”string” 时,输入必须是字符串可迭代对象的迭代对象
>>> h = FeatureHasher(n_features=8, input_type="string") >>> raw_X = [["dog", "cat", "snake"], ["snake", "dog"], ["cat", "bird"]] >>> f = h.transform(raw_X) >>> f.toarray() array([[ 0., 0., 0., -1., 0., -1., 0., 1.], [ 0., 0., 0., -1., 0., -1., 0., 0.], [ 0., -1., 0., 0., 0., 0., 0., 1.]])
方法
fit
([X, y])仅验证估计器的参数。
fit_transform
(X[, y])拟合数据,然后进行转换。
get_metadata_routing
()获取此对象的元数据路由。
get_params
([deep])获取此估计器的参数。
set_output
(*[, transform])设置输出容器。
set_params
(**params)设置此估计器的参数。
set_transform_request
(*[, raw_X])请求传递给
transform
方法的元数据。transform
- __init__(n_features=1048576, *, input_type='dict', dtype=<class 'numpy.float64'>, alternate_sign=True)¶