基础理论
常用方法
fit vs transform vs fit_transform vs
fit方法是用于从训练集中学习模型参数,其中包括归一化和均值,标准偏差的处理。
transform方法用于将模型用于位置数据
fit_transform是fit和transform的合集,高效的将模型训练和转
化合并到一起。
CountVectorizer
文本型文档集合转换成计数矩阵。用于分词计数作为特征的场景。
底层用scipy.sparse.csr_matrix库实现,会产生一个计数的稀疏
表示。
如果不提前准备词典,并且不提供一个分析器做特征选择,
那么特征数量和文档集合中词汇量数量相等。
输入可迭代的语料,得到语料中所有单词,统计出每个单词在每条迭代
元语料元素的个数。
所有语料个数为sc (变量i),单词记为wc (变量j)。得到的单词个
数矩阵 sc * wc。
(i,j)表示第i个单词在语料j中出现的次数。
方法
self.fit_transform(corpus)
返回值:每个单词在每条语料中出现次数。
self.get_feature_names
返回值:按照字典排序的单词列表
HashingVectorizer
对数据进行降维的一种向量化方式。解决大规模分词情况下计算效率低
的问题。
大规模的文本处理中,由于特征的维度对应分词词汇表的大小,所以维
度可能非常恐怖,此时需要进行降维,不能直接用CountVectorizer 的向量化方法。
这种方式又叫Hash Trick。
signed hash trick是一种升级的Hash Trick用来解决某些哈希
位置的值过大。
由于不知道每一列的意义,所以Hash Trick的解释性不强。
DictVectorizer
把list<map> 转换为稀疏矩阵表示。解决了原始数据元素是entry的
稀疏矩阵表示问题。
对于map entry value是string类型的部分用到了"one-hot 独热
编码"。
输出矩阵行列含义:
把每一个map作为行,总共有list.size行,所有map中的每一
个entry作为列的含义,比如 "city=beijing",另外对于
nubmer类型的entry,比如"temperature=23"列的含义
为"temperature",23作为矩阵元素的值。
特征值:
特征值名称是每一个"value是string的"entry,以及每一
个"value是number的"key。
矩阵值如何生成:
如果map的entry中value是string类型,则用0,1表
示。如果是数字,则表示原来的数字。
注意:
对于list中的每个map而言,entry的key是唯一不重复的。
而对于list中的所有map而言,map之间的key可能是重复的。
one-hot编码体现在:
map之间key=value的key一致,但
value不一致的时候,如果只有一个map有该value,则把
该特征值key=value列下有该key=value的矩阵值编码为
1,表示该map有该key=value,把同列上其余map中的该
key=value编码为0,表示其余map没有该key=value。
TfidfVectorizer
输出:
参数:
max_features: 构建词汇时,取跨语料词条频率排序最靠前的词汇个数。
max_df: 删除过于频繁的术语,也称为“语料库特定的停用词。
max_df = 0.50表示“忽略超过50%的文档”中出现的字词。
max_df = 25表示“忽略出现在超过25个文档”中的术语
LatentDirichletAllocation
该模型用于对N篇语料进行主题分类的场景。
输入:
N篇文章
主题个数K,(调用者凭经验自己设定所有语料被划分的主题个数,
往往需要根据结果调试)
所有语料词语个数 W:是一个中间结果。
输出:
语料主题概率矩阵,维度是(N,K),值表示该语料属于该主题的概率。
主题词语分布矩阵,维度 (K, W),值表示分布值
参考
文本挖掘预处理之向量化与Hash Trick
DictVectorizer输出稀疏矩阵的表示
用scikit-learn学习LDA主题模型(中间结果-矩阵表示)
如何用Python从海量文本抽取主题?(LDA结果图形展示)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。