Python文本特征提取 DictVectorizer CountVectorizer TfidfVectorizer 附代码详解

文本特征提取:将文本数据转化成特征向量的过程。
python-sklearn库的模块 sklearn.feature_extraction 可用于提取符合机器学习算法支持的特征,比如文本和图片。

【注】特征特征提取与特征选择有很大的不同:前者包括将任意数据(如文本或图像)转换为可用于机器学习的数值特征。后者是将这些特征应用到机器学习中。

DictVectorizer 对使用字典储存的数据进行特征提取与向量化

  因为字典本身的key-value存储特点,这种情况实际上属于分类变量特征提取,scikit-learn的DictVectorizer类可以用来将Python字典(dict)对象列表的要素数组转换为 scikit-learn 估计器使用的 NumPy/SciPy 表示形式。

  在下面的例子,”城市” 是一个类别属性,而 “温度” 是传统的数字特征。其中类别型特征无法直接数字化表示,通常用独热编码(One-of-K or One-Hot Encoding):借助原特征的名称,组合产生新的特征,并采用0/1二值方式进行量化;相比用单独的数值来表示分类,这种方法看起来很直观。而数值型特征,一般情况下只需要维持原始特征值即可。

# 从sklearn.feature_extraction 导入 DictVectorizer
from sklearn.feature_extraction import DictVectorizer
# 定义一组字典列表,用来表示多个数据样本(每个字典代表一个数据样本)。
measurements = [{
   'city': 'Dubai', 'temperature': 33.}, {
   'city': 'London', 'temperature': 12.}, {
   'city': 'San Fransisco', 'temperature': 18.}]
# 初始化DictVectorizer特征抽取器
vec = DictVectorizer()
# 输出转化之后的特征矩阵。
print (vec.fit_transform(measurements).toarray())
# 输出各个维度的特征含义。
print (vec.get_feature_names())

输出结果为

[[ 1. 0. 0. 33.]
[ 0. 1. 0. 12.]
[ 0. 0. 1. 18.]]
[‘city=Dubai’, ‘city=London’, ‘city=San Fransisco’, ‘temperature’]

这里的类别型变量city有三个值:Dubai, London,San Francisco;独热编码方式就是用三位二进制数,每一位表示一个城市。 【注】:编码的顺序不是由字典中城市排列的顺序决定,城市并没有自然数顺序,编码数值的大小并没有实际意义。例如,改变字典中的key-value顺序后,第一个city“London”的编码是[ 0. 1. 0.],用第二个元素为1表示,对应输出结果为

# 定义一组字典列表,用来表示多个数据样本(每个字典代表一个数据样本)。
measurements = [{
   'city': 'London', 'temperature': 12.}, {
   'city': 'Dubai', 'temperature': 33.}, {
   'city': 'San Fransisco', 'temperature': 18.}]

[[ 0. 1. 0. 12.]
[ 1. 0. 0. 33.]
[ 0. 0. 1. 18.]]
[‘city=Dubai’, ‘city=London’, ‘city=San Fransisco’, ‘temperature’]

CountVectorizer / TfidfVectorizer 处理无特殊数据结构存储的数据

  对于没有使用特殊数据结构进行存储的文本数据,如一系列的字符串、一篇文档,常用的文本特征表示方法为词袋模型。

  • 词袋模型(Bag of

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python文本特征提取是指利用Python编程语言从文本数据中提取特征的过程。在自然语言处理(NLP)和文本挖掘等领域中,对文本进行特征提取可以将文本数据转化为可用于机器学习和统计分析的数字或向量表示。 Python提供了丰富的库和工具,可以用于文本特征提取。常见的特征提取方法包括词袋模型(Bag of Words)、TF-IDF、词频(Term Frequency)、逆文档频率(Inverse Document Frequency)等。 词袋模型是最常用的文本特征提取方法之一。它将文本数据表示为一个词汇表,并统计每个词汇的出现频率作为特征。Python的scikit-learn库提供了CountVectorizer类来实现词袋模型的特征提取。 TF-IDF是一种常用的用于衡量词语在文本文档和语料库中重要性的方法。通过计算词在文档中的频率和在整个语料库中的逆文档频率,得到每个词的TF-IDF值作为特征。scikit-learn库提供了TfidfVectorizer类用于实现TF-IDF特征提取。 词频和逆文档频率是构成TF-IDF方法的两个组成部分。词频衡量了词语在文档中的频率,逆文档频率衡量了词语在整个语料库中的重要性。使用Python的scikit-learn库可以计算并提取词频和逆文档频率作为文本特征。 除了以上常见的文本特征提取方法外,Python还可以使用正则表达式、n-gram模型、Word2Vec等方法进行文本特征提取。 总而言之,Python提供了丰富的库和工具,可以方便地进行文本特征提取。通过选择合适的特征提取方法,可以将文本数据转化为数字或向量表示,为后续的机器学习和统计分析任务奠定基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值