sklearn.feature_extraction.DictVectorizer特征抽取(特征向量化)

sklearn.feature_extraction.DictVectorizer

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

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

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

当特征值是字符串时,此转换器将执行二进制 one-hot(又名 one-of-K)编码:为该特征可以采用的每个可能的字符串值构造一个布尔值特征。

如果特征值是一个序列或一组字符串,则此转换器将迭代这些值并计算每个字符串值的出现次数。

但是,请注意,当特征值为字符串类型时,此转换器只会执行二进制 one-hot 编码。如果分类特征表示为数值,例如 int 或字符串的可迭代,则可以使用 DictVectorizer OneHotEncoder来完成二进制 one-hot 编码。

构造参数:

dtype:dtype, default=np.float64* 特征值的类型。作为 dtype 参数传递给 Numpy array/scipy.sparse 矩阵构造函数。

separator:str, default=”=”* 为 one-hot 编码构建新功能时使用的分隔符字符串。

sparse:bool, default=True* 变换是否应该产生 scipy.sparse 矩阵。

sort:bool, default=True* 是否feature_names_vocabulary_应该在拟合时排序

属性:
vocabulary_: 特征名称和特征索引的映射字典。
feature_names_: 一个包含所有特征名称的,长度为特征名称个数的列表。

方法:

方法名称功能
fit(X[, y])了解功能名称列表 -> 索引映射。
fit_transform(X[, y])学习特征名称列表 -> 索引映射和变换 X。
get_feature_names()已弃用:get_feature_names 在 1.0 中已弃用,并将在 1.2 中删除。
get_feature_names_out([input_features])获取用于转换的输出特征名称。
get_params([deep])获取此估计器的参数。
inverse_transform(X[, dict_type])将数组或稀疏矩阵 X 转换回特征映射。
restrict(support[, indices])使用功能选择将功能限制为支持的功能。
set_params(**params)设置这个估计器的参数。
transform(X)将 feature->value dicts 转换为数组或稀疏矩阵。
from sklearn.feature_extraction import DictVectorizer

vec = DictVectorizer(sparse=False)  #注若字典中包含非数字的值,需要进行特征抽取时,将sparse选为false

list = [{'城市':'北京', '国家':'中国', '其他':'美丽'}, {'城市':'西雅图', '国家':'美国', '其他':'优雅'}, {'城市':'巴黎', '国家':'法国', '其他':'浪漫'}]
result = vec.fit_transform(list)
print(result)
result = vec.inverse_transform(result)
print(result)
print(vec.get_feature_names())
#运行结果为  行数为输入列表中词典的数量,每个词典中包含多个特征,这些特征的取值总个数为列数
[[0. 0. 1. 1. 0. 0. 1. 0. 0.]
 [1. 0. 0. 0. 0. 1. 0. 0. 1.]
 [0. 1. 0. 0. 1. 0. 0. 1. 0.]]
[{'其他=美丽': 1.0, '国家=中国': 1.0, '城市=北京': 1.0}, {'其他=优雅': 1.0, '国家=美国': 1.0, '城市=西雅图': 1.0}, {'其他=浪漫': 1.0, '国家=法国': 1.0, '城市=巴黎': 1.0}]
['其他=优雅', '其他=浪漫', '其他=美丽', '国家=中国', '国家=法国', '国家=美国', '城市=北京', '城市=巴黎', '城市=西雅图']
#注:如本例中键值对包含非数值化的数据,需要将sparse设置为False,若不进行此操作默认sparse为True运行结果如下:
#  (0, 2)	1.0
#  (0, 3)	1.0
#  (0, 6)	1.0
#  (1, 0)	1.0
#  (1, 5)	1.0
#  (1, 8)	1.0
#  (2, 1)	1.0
#  (2, 4)	1.0
#  (2, 7)	1.0

注:DictVectorizer一般用在机器学习模型训练和测试中,如果训练阶段使用fit_transform,则在测试阶段只需要对测试样本进行transform就行了

参考网站:https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.DictVectorizer.html#sklearn.feature_extraction.DictVectorizer

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值