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 将转换器拟合到 Xy,并返回 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

配置 transformfit_transform 的输出。

  • "default": 转换器的默认输出格式

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置保持不变

1.4 版本新增: 添加了 "polars" 选项。

返回:
selfestimator instance

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

transform(raw_X)[source]#

将实例序列转换为 scipy.sparse 矩阵。

参数:
raw_X可迭代的原始特征可迭代对象,长度 = n_samples

样本。每个样本必须是可迭代的(例如,列表或元组),包含/生成将被哈希的特征名称(以及可选的值,请参阅 input_type 构造函数参数)。raw_X 不需要支持 len 函数,因此它可以是生成器的结果;n_samples 是即时确定的。

返回:
Xsparse matrix of shape (n_samples, n_features)

特征矩阵,用于估计器或进一步的转换器。