DictVectorizer#

class sklearn.feature_extraction.DictVectorizer(*, dtype=<class 'numpy.float64'>, separator='=', sparse=True, sort=True)#

将特征-值映射列表转换为向量。

这个转换器将特征名称到特征值的映射(类似字典的对象)列表转换为Numpy数组或scipy.sparse矩阵,以便与scikit-learn估计器一起使用。

当特征值为字符串时,此转换器将进行二进制独热(即K中之一)编码:为特征可以采用的每个可能的字符串值构造一个布尔值特征。例如,一个可以取值“ham”和“spam”的特征“f”将在输出中变成两个特征,一个表示“f=ham”,另一个表示“f=spam”。

如果特征值是字符串序列或集合,此转换器将遍历这些值并计算每个字符串值的出现次数。

然而,请注意,此转换器仅在特征值为字符串类型时进行二进制独热编码。如果分类特征以数值形式表示,如int或字符串的可迭代对象,可以在DictVectorizer之后使用:class:~sklearn.preprocessing.OneHotEncoder 来完成二进制独热编码。

在样本(映射)中不出现的特征在生成的数组/矩阵中将具有零值。

有关不同特征提取器的效率比较,请参见:ref:sphx_glr_auto_examples_text_plot_hashing_vs_dict_vectorizer.py

更多信息请参见:ref:用户指南 <dict_feature_extraction>

Parameters:
dtypedtype, default=np.float64

特征值的类型。传递给Numpy数组/scipy.sparse矩阵构造函数作为dtype参数。

separatorstr, default=”=”

在构造独热编码的新特征时使用的分隔符字符串。

sparsebool, default=True

转换是否应生成scipy.sparse矩阵。

sortbool, default=True

在拟合时是否应对 feature_names_vocabulary_ 进行排序。

Attributes:
vocabulary_dict

将特征名称映射到特征索引的字典。

feature_names_list

包含特征名称的列表,长度为n_features(例如,“f=ham”和“f=spam”)。

See also

FeatureHasher

仅使用哈希函数进行向量化。

sklearn.preprocessing.OrdinalEncoder

处理编码为任意数据类型列的名义/分类特征。

Examples

>>> from sklearn.feature_extraction import DictVectorizer
>>> v = DictVectorizer(sparse=False)
>>> D = [{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}]
>>> X = v.fit_transform(D)
>>> X
array([[2., 0., 1.],
       [0., 1., 3.]])
>>> v.inverse_transform(X) == [{'bar': 2.0, 'foo': 1.0},
...                            {'baz': 1.0, 'foo': 3.0}]
True
>>> v.transform({'foo': 4, 'unseen_feature': 3})
array([[0., 0., 4.]])
fit(X, y=None)#

学习特征名称到索引的映射列表。

Parameters:
X映射或映射的可迭代对象

从特征名称(任意 Python 对象)到特征值(字符串或可转换为 dtype)的字典或映射。

Changed in version 0.24: 接受一个分类特征的多个字符串值。

y(忽略)

被忽略的参数。

Returns:
self对象

DictVectorizer 类的实例。

fit_transform(X, y=None)#

学习特征名称 -> 索引映射列表并转换 X。

类似于 fit(X) 后跟 transform(X),但不需要在内存中具体化 X。

Parameters:
X映射或映射的迭代

特征名称(任意 Python 对象)到特征值(字符串或可转换为 dtype)的 Dict(s) 或 Mapping(s)。

Changed in version 0.24: 接受一个分类特征的多个字符串值。

y(忽略)

忽略的参数。

Returns:
Xa{array, sparse matrix}

特征向量;总是 2-d。

get_feature_names_out(input_features=None)#

获取变换后的输出特征名称。

Parameters:
input_features字符串数组或None,默认=None

未使用,此处仅为保持API一致性而存在。

Returns:
feature_names_out字符串对象的ndarray

变换后的特征名称。

get_metadata_routing()#

获取此对象的元数据路由。

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

inverse_transform(X, dict_type=<class 'dict'>)#

将数组或稀疏矩阵X转换回特征映射。

X必须是由该DictVectorizer的transform或fit_transform方法生成的;它可能只经过了保留特征数量及其顺序的转换器。

在独热编码/K编码的情况下,返回构造的特征名称和值,而不是原始的特征名称和值。

Parameters:
X{array-like, sparse matrix},形状为(n_samples, n_features)

样本矩阵。

dict_typetype, 默认=dict

特征映射的构造函数。必须符合collections.Mapping API。

Returns:
D形状为(n_samples,)的dict_type对象列表

样本X的特征映射。

restrict(support, indices=False)#

限制特征仅使用特征选择中的支持特征。

此函数在原地修改估计器。

Parameters:
supportarray-like

布尔掩码或索引列表(如特征选择器的get_support成员返回的)。

indicesbool, default=False

support是否为索引列表。

Returns:
selfobject

DictVectorizer类实例。

Examples

>>> from sklearn.feature_extraction import DictVectorizer
>>> from sklearn.feature_selection import SelectKBest, chi2
>>> v = DictVectorizer()
>>> D = [{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}]
>>> X = v.fit_transform(D)
>>> support = SelectKBest(chi2, k=2).fit(X, [0, 1])
>>> v.get_feature_names_out()
array(['bar', 'baz', 'foo'], ...)
>>> v.restrict(support.get_support())
DictVectorizer()
>>> v.get_feature_names_out()
array(['bar', 'foo'], ...)
set_inverse_transform_request(*, dict_type: bool | None | str = '$UNCHANGED$') DictVectorizer#

Request metadata passed to the inverse_transform method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to inverse_transform if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to inverse_transform .

  • 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:
dict_typestr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for dict_type parameter in inverse_transform .

Returns:
selfobject

The updated object.

set_output(*, transform=None)#

设置输出容器。

请参阅 介绍 set_output API 以了解如何使用API的示例。

Parameters:
transform{“default”, “pandas”, “polars”}, 默认=None

配置 transformfit_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

估计器实例。

transform(X)#

将特征->值字典转换为数组或稀疏矩阵。

在拟合或拟合转换过程中未遇到的命名特征将被静默忽略。

Parameters:
X映射或映射的迭代,形状为 (n_samples,)

特征名称(任意Python对象)到特征值(字符串或可转换为dtype)的映射(s)或字典(s)。

Returns:
Xa{数组, 稀疏矩阵}

特征向量;始终为2维。