FeatureHasher#
- class sklearn.feature_extraction.FeatureHasher(n_features=1048576, *, input_type='dict', dtype=<class 'numpy.float64'>, alternate_sign=True)[source]#
实现特征哈希,又名哈希技巧。
此类别将符号特征名称(字符串)序列转换为 scipy.sparse 矩阵,使用哈希函数计算与名称对应的矩阵列。采用的哈希函数是 Murmurhash3 的带符号 32 位版本。
字节字符串类型的特征名称按原样使用。Unicode 字符串首先转换为 UTF-8,但不会进行 Unicode 规范化。特征值必须是(有限的)数字。
此类别是 DictVectorizer 和 CountVectorizer 的低内存替代方案,适用于大规模(在线)学习以及内存紧张的情况,例如在嵌入式设备上运行预测代码时。
有关不同特征提取器效率比较,请参阅 FeatureHasher 和 DictVectorizer 比较。
请在用户指南中阅读更多内容。
在版本 0.13 中添加。
- 参数:
- n_featuresint, default=2**20
输出矩阵中的特征(列)数量。较少的特征数量可能会导致哈希冲突,但较多的特征数量将导致线性学习器中的系数维度更大。
- input_typestr, default=’dict’
从 {‘dict’, ‘pair’, ‘string’} 中选择一个字符串。'dict'(默认值)接受(feature_name, value)形式的字典;'pair' 接受(feature_name, value)形式的对;或 'string' 接受单个字符串。feature_name 应该是字符串,而 value 应该是数字。在 'string' 的情况下,值默认为 1。feature_name 被哈希以找到特征的相应列。输出中值符号可能会反转(但请参阅下面的 non_negative)。
- dtypenumpy dtype, default=np.float64
特征值的类型。作为 dtype 参数传递给 scipy.sparse 矩阵构造函数。不要将其设置为 bool、np.boolean 或任何无符号整数类型。
- alternate_signbool, default=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=None, y=None)[source]#
仅验证估计器的参数。
此方法允许:(i)验证估计器的参数和(ii)与scikit-learn转换器API保持一致。
- 参数:
- X被忽略
Not used, present here for API consistency by convention.
- y被忽略
Not used, present here for API consistency by convention.
- 返回:
- selfobject
FeatureHasher 类实例。
- fit_transform(X, y=None, **fit_params)[source]#
拟合数据,然后对其进行转换。
使用可选参数
fit_params将转换器拟合到X和y,并返回X的转换版本。- 参数:
- Xshape 为 (n_samples, n_features) 的 array-like
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象,默认=None
目标值(对于无监督转换,为 None)。
- **fit_paramsdict
额外的拟合参数。仅当估计器在其
fit方法中接受额外的参数时才传递。
- 返回:
- X_newndarray array of shape (n_samples, n_features_new)
转换后的数组。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查阅 用户指南,了解路由机制如何工作。
- 返回:
- routingMetadataRequest
封装路由信息的
MetadataRequest。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, default=True
如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- set_output(*, transform=None)[source]#
设置输出容器。
有关如何使用 API 的示例,请参阅引入 set_output API。
- 参数:
- transform{“default”, “pandas”, “polars”}, default=None
配置
transform和fit_transform的输出。"default": 转换器的默认输出格式"pandas": DataFrame 输出"polars": Polars 输出None: 转换配置保持不变
1.4 版本新增: 添加了
"polars"选项。
- 返回:
- selfestimator instance
估计器实例。