FeatureHasher#
- class sklearn.feature_extraction.FeatureHasher(n_features=1048576, *, input_type='dict', dtype=<class 'numpy.float64'>, alternate_sign=True)#
实现特征哈希,即哈希技巧。
此类将符号特征名称(字符串)序列转换为scipy.sparse矩阵,使用哈希函数计算与名称对应的矩阵列。所使用的哈希函数是Murmurhash3的带符号32位版本。
类型为字节字符串的特征名称按原样使用。Unicode字符串首先转换为UTF-8,但不进行Unicode规范化。特征值必须是(有限的)数字。
此类是DictVectorizer和CountVectorizer的低内存替代品,适用于大规模(在线)学习以及内存紧张的情况,例如在嵌入式设备上运行预测代码时。
有关不同特征提取器效率的比较,请参见:ref:
sphx_glr_auto_examples_text_plot_hashing_vs_dict_vectorizer.py
。更多信息请参见:ref:
用户指南 <feature_hashing>
。Added in version 0.13.
- Parameters:
- 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
特征值的类型。传递给scipy.sparse矩阵构造函数作为dtype参数。不要将此设置为bool、np.boolean或任何无符号整数类型。
- alternate_signbool, default=True
当为True时,会为特征添加交替符号,以在哈希空间中近似保留内积,即使n_features较小。这种方法类似于稀疏随机投影。
Changed in version 0.19:
alternate_sign
取代了现已弃用的non_negative
参数。
See also
DictVectorizer
使用哈希表对字符串值特征进行向量化。
sklearn.preprocessing.OneHotEncoder
处理名义/分类特征。
Notes
此估计器是:term:
无状态的
,不需要拟合。然而,我们建议调用:meth:fit_transform
而不是:meth:transform
,因为参数验证仅在:meth:fit
中执行。Examples
>>> 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)#
仅验证估计器的参数。
此方法允许:(i) 验证估计器的参数和 (ii) 与 scikit-learn 转换器 API 保持一致。
- Parameters:
- X忽略
不使用,此处仅为保持 API 一致性而存在。
- y忽略
不使用,此处仅为保持 API 一致性而存在。
- Returns:
- selfobject
FeatureHasher 类实例。
- fit_transform(X, y=None, **fit_params)#
拟合数据,然后进行转换。
将转换器拟合到
X
和y
,并带有可选参数fit_params
, 并返回X
的转换版本。- Parameters:
- X形状为 (n_samples, n_features) 的类数组
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组, 默认=None
目标值(无监督转换为 None)。
- **fit_paramsdict
其他拟合参数。
- Returns:
- X_new形状为 (n_samples, n_features_new) 的 ndarray 数组
转换后的数组。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
MetadataRequest
封装的 路由信息。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- set_output(*, transform=None)#
设置输出容器。
请参阅 介绍 set_output API 以了解如何使用API的示例。
- Parameters:
- transform{“default”, “pandas”, “polars”}, 默认=None
配置
transform
和fit_transform
的输出。"default"
: 转换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 转换配置不变
Added in version 1.4:
"polars"
选项已添加。
- Returns:
- self估计器实例
估计器实例。
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- set_transform_request(*, raw_X: bool | None | str = '$UNCHANGED$') FeatureHasher #
Request metadata passed to the
transform
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed totransform
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it totransform
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- raw_Xstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
raw_X
parameter intransform
.
- Returns:
- selfobject
The updated object.
- transform(raw_X)#
将一系列实例转换为scipy.sparse矩阵。
- Parameters:
- raw_X可迭代对象,包含可迭代的原始特征,长度 = n_samples
样本。每个样本必须是可迭代的(例如,列表或元组), 包含/生成特征名称(和可选的特征值,见input_type构造函数参数),这些特征名称将被哈希处理。 raw_X不需要支持len函数,因此它可以是生成器的结果;n_samples是动态确定的。
- Returns:
- X形状为(n_samples, n_features)的稀疏矩阵
特征矩阵,用于估计器或进一步的转换器。