[机器学习与scikit-learn-44]:特征工程-特征提取(编码)-3-权重向量编码以及代码示例

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[机器学习与scikit-learn-44]:特征工程-特征提取(编码)-3-权重向量编码以及代码示例相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123953101


目录

前言:

第1章 概述权重向量概述

第2章 代码示例


前言:

有时候,词频向量中存放的数值是绝对数值,这种绝对数值表示的向量有如下的缺点:

(1)不同文章,长短不同,单词的数量自然不同,这样导致不同文章的比较就存现了不公平现象。

(2)有些词,虽然出现的次数比较大,但它本身没有任何含义,这样的词频实际上是没有意义的。

为了克服上述问题,采用词汇在文中的比例更具备特征性,或者说,用单词在文中所有单词中的权重、比例编码的向量,特征性更强

这就是本文的基本思想:词频 =》词频权重Tf–idf权重向量

权重向量,不仅仅用在文本词频转换上,也可以用于计数的场合。

权重向量,有点类似于归一化的数据预处理!!!

第1章 概述权重向量概述

第2章 代码示例

from sklearn.feature_extraction.text import TfidfTransformer

transformer = TfidfTransformer(smooth_idf=False)

word_counts = [[300, 1, 1],
               [2, 0, 0],
               [3, 0, 0],
               [4, 0, 1],
               [3, 2, 0],
               [3, 0, 2]]

# 把已有的普通的词向量转换成权重向量
tfidf = transformer.fit_transform(word_counts)

tfidf.toarray()
array([[0.99995961, 0.00699509, 0.0056436 ],
       [1.        , 0.        , 0.        ],
       [1.        , 0.        , 0.        ],
       [0.92089788, 0.        , 0.38980391],
       [0.58149261, 0.81355169, 0.        ],
       [0.66312327, 0.        , 0.7485102 ]])

备注:

TfidfTransformer的输入:文本对应的普通的词频向量,如上图中的word_counts。

TfidfTransformer的输出:二范数的输出,每个向量分量的值,都被限制到[0,1],这样就消除了文章长度不同造成的词频数量的不同造成的两个文本之间的差异,如上图中的300,如果不转换,300这个值可能就把所有其它词的值隐藏掉了。

TfidfTransformer的转换:与普通二范数转换的区别是,TfidfTransformer还考虑了所有文本中相同词的影响。TfidfTransformer转换后,代表一篇文章的词向量更加的合理。

这个过程是特征工程的一部分,充分体现了从原始数据中提取特征的方法对最终模型效果的影响。


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:

以上是关于[机器学习与scikit-learn-44]:特征工程-特征提取(编码)-3-权重向量编码以及代码示例的主要内容,如果未能解决你的问题,请参考以下文章

Python 与金融数据|生成机器学习的标签和特征

机器学习实战 | 机器学习特征工程最全解读

机器学习 - 特征筛选与降维

如何使用机器学习模型(或其特征系数)来解释该特征是不是与特定类别相关?

[机器学习与scikit-learn-42]:特征提取-1-从字典中提取特征

机器学习特征筛选:相关系数法(correlation)