什么是特征降维,图像特征降维
文本分类我大致分为4类。这些链接如下:
文本分类流程(1)文本分类数据预处理的一般步骤——毕业论文纪念
文本分类(2)文本数据的数字化、矢量化和降维
文本分类(3)-对处理后的数据使用KNN、朴素贝叶斯和SVM分类方法。
文本分类(4)——分类评估
文章前言==3。文本数据转换成数值向量==1。反vectorzer-一个热矩阵例子:傻子的解释:2。TFIDF vectorzer——一个热矩阵变换的例子:综合比较两个计数器VS TFIDF 3.Word2Vec .数据降维使用max_feature控制维数和pca降维。
序
前面的博客文本分类流程(一)文本分类数据预处理的一般步骤——毕业论文纪念已经描述了文本处理中的两个步骤,即网页获取和数据清洗,以获得干净的文本数据。
下面是如何把我们能识别的文本数据转化为机器可以识别的数值数据(向量)
首先看一下这篇文章,了解特征提取中特征选择的大致内容。特征选择和特征权重计算的区别。
知道机器可以对数值数据使用各种公式,它只能识别这些,于是我们开始把我们获取的文本数据转换成数值数据。
下面简单介绍一下我所知道的文本数据矢量化的三种方法。
3.将文本数据转换成数值向量1。反向量化子—一个热矩阵在学习概率论的时候,不管自然界中的什么东西变成了我们可以研究的东西,我们首先统计样本空间中的所有元素,得到样本元素的频率表示。简单来说就是数数而已。现在,我们将其扩展到文本量化,即使用split函数将空格连接的文本数据分开,我们会得到每个文本的列表,形成一个字典。在第一个样本中,统计字典中包含的每个元素出现的次数,这是文本矢量化器矢量化的原理。
例如comment1=comments[0]=[element1,element2,…,element_nm_i]
设样本量为n,第I个样本包含m_i个元素。
一个由所有元素组成的字典(以字典的形式,但这里我们用链表来存储)是:dict={elem1,elem2,…elem_N}设字典中的元素个数为N,注意:字典中的所有元素都不重复。
示例:from sk learn . feature _ extraction . text import countvectorzercorporation=[这是第一个文档。,‘这份文件是第二份文件。’,这是第三个,‘这是第一份文件吗?’,]vector zer=count vector zer()X=vector zer . fit _ transform(corpus)print(vector zer . get _ feature _ names())#[ and , document , first , is , one , second , the , This ]print(X . toarray())# doctest:normalize _ white space #[[0111100101]#[10011]#[011100101]]]傻子的解释:一个字典的长度对应具体实例,这是第一份文件。你可以看到字典的顺序是[和,文档,第一个,是,一个,第二个,第三个,这个],和它一一对应,不出现,频率为0,文档出现,频率。这样,一个文本数据可以转换成一个数值向量。这种一一对应可以简单理解为数学中的映射,将字典中的元素映射到N个正整数字段,字典(文本数据)----正整数(数值数据)(0,1,2,…)。
2.tfidfvectorizer的变换—一个热矩阵不同于2个热矩阵。tf-idf主要用逆文档频率,具体计算可以百度和csdn,看别人的解释。简单来说,我们认为文档中出现的次数越少,越能代表一个文档。相反,文档中频繁出现的元素的文本权重越小,它就越不能代表文档。
一个例子:from sk learn . feature _ extraction . text import tfidfvectorzer corpus=[这是第一个文档。,‘这份文件是第二份文件。’,这是第三个,‘这是第一份文件吗?’,]矢量器r=tfidfvectorizer () x=矢量器r . fit _ transform(corpus)# fit and transform text print(矢量器r.get _ feature _ names ()) #输出特征字典# [and , document ,First , is , one , second , the , this] print (x.shape) #输出文本的维度为4行9列,每个文本的维度为9,与上面的特征个数长度相同# (4,9)print(X.toarray()) #矢量化# 0.38408524 0.0.38408524] # [0.0.6876236 0.0.28108867 0.0.53864762# 0.28108867 0.0.28108867]# [0.51184851 0.0.0.26710379 0.51184851 0.# 0.26710379 0.51184851 0.26710379]# [0.0.46979139 0.58028582 0.38408524 0.0.# 0.38408524 0.0.38408524]]两个计数器VS TFIDFTfidfTransformer+CounterVectorizer=tfidfVectorizer的综合比较
从sk learn . feature _ extraction . text导入tfidfvectorzer corpus=[这是第一个文档。,‘这份文件是第二份文件。’,这是第三个,‘这是第一份文件吗?’,]# method1 TfidfTransformer反向量化器=tfidfvectorizer from sk learn . feature _ extraction . text导入TfidfTransformer, counttvectorzer verizer=counttvectorizer()#首先使用频率符号transformer=tfidftransformer()#然后使用tdif进行逆文档频率转换tfidf=transformer . fit _ transform(vector r . fit _ transform(corpus))print(tfidf . to array())#数字化后输出矩阵#方法2直接使用tfidf vectorizer=tfidf vectorizer()x=vectorizer . fit _ transformer(corpus)#对文本进行拟合和转换print(vectorizer . get _ feature _ names())#输出特征字典# [and , document , first , is , one , the , this] print (x. shape) #输出文本维度,4行9列,每个文本维度为9,与上面的特征数相同。 9)print(X.toarray())# [[0。0.46979139 0.58028582 0.38408524 0.0.# 0.38408524 0.0.38408524]# [0.0.6876236 0.0.28108867 0.0.53864762# 0.28108867 0.0.28108867] # [0.51184851 0.0.0.26710379 0.5184851 0.# 0.28879.88888888886
文本挖掘预处理参考TF-IDF。
sci-learn:count vectorizer做了什么来提取tf?
Python sklearn自带的模块用来快速简单的表达文章的tfidf向量空间。
Sklearn文本特征提取
关键词提取
3.Word2Vec将一个单词(2/3/更多单词)前后的单词连接在一起,作为新元素存储在字典中。之后使用的方法类似于counterVectorizer和tfidfVectorizer。
在我的论文里,我只是简单了解了一下。最后内容太多,所以我没有把这种文本数据矢量化的方法和前两种进行比较。如果我能学到足够的东西,我可以对比一下,看看这种文本矢量化的方法对以后的分类效果会有什么样的影响。
参见具体参考资料:
理解word2vec。
Word2vec构建中文词向量
Word2vec简介(4): CBOW和跳格模型
Word2vec单词向量原理与实践
Python对文本进行分类,基于Word2VEC和Sklearn-SVM对微博垃圾评论进行分类。
它们之间的区别与连接12中使用的字典相同。
3用的字典比较大。
但本质上,这三者都是基于词典的,词典以频率为基础,将文本数据转换为数值向量。
我知道并使用的数据降维方法有两种,当然还有其他方法,比如LDA。自己去探索吧。
就我而言,有LDA,PCA,因子分析,SVD。
使用max_features来控制尺寸。sklearn文本特征提取中引入了一个参数:max _ features。将此参数设置为您想要控制的尺寸。在这里,我将其设置为200。
Countervectorizer和tfidfvectorizer都有这个参数,可以实现维度控制。
使用主成分分析降低维数。如何在sklearn中使用pca?有PCA简单用法的介绍。
注意:在使用pca降维数据之前,应该对数据进行标准化处理。这个用sklearn练习pca降维的例子并不是很完整,主要用来说明在使用PCA降维之前,数据预处理是数据标准化的重要性。
这个【代码分析】用sklearn PCA来描述特征数据的降维,这就是我想要的样子。PCA降维的原理和步骤非常好,简单,令人满意。
关于标准化:
数据规范化-minmax scaler()/maxabscaler()-Python代码
【原文】3354用sklearn进行数据预处理的规范化/标准化/正则化
数字矢量化,预处理代码
data _预处理_最终. py
初始数据处理。将原始处理过的注释转换成可以数字处理的形式2。数字处理3。将样本数据分为训练集和样本集。同类处理4、数据标准化5、主成分降维 def get _预处理():max _ f=200从last _ process _ 2导入no stop word _ comments、noStopWord_class从sklearn . feature _ extraction . text导入TfidfVectorizer、CountVectorizer #从sklearn.decomposition导入PCA #主成分方法从sklearn.model _ selection导入train _ test _ split #数据切割-从sk learn导入训练测试预处理#结果求值#用空格分隔起始字符串def get _ split (x): temp=.split( ),X)如果v不是 ]return temp def join data(data _ to _ join):#空字符串分隔文本temp=[ 。join(x)for x in data _ to _ join]Return temp Corpus=join data([get _ split(v)for v in no stop word _ comments])#得到的是一个列表tfidf=TfidfVectorizer() #类方法retfidf=tfidf . fit _ transform(Corpus)#是继承的,把语料库转换成数值向量得到的矩阵input _ data _ matrix=retfidf . toarray()#是切割数据训练:0.8,test: 0.2 x_train,x_test,y_train,y _ train Random_state=400) #标准化上述数据# - # stand=预处理. standard scaler()# x _ train=stand . fit _ transform(x _ train x _ test=stander . transform(x _ test)max _ min=预处理。 minmax scaler()X _ train=max _ min . fit _ transform(X _ train)X _ test=max _ min。fit _ transform(x _ test)#-# PCA=PCA(n _ components=max _ f)x _ train,x _ test=Pca。transform (x _ test)返回x _ train,x _ test,y _ train,y _ test,特征工程的相关工作就完成了。下一步是快速,即将降维得到的数据输入到分类中进行训练、测试和评估,我的论文就这样完成了。
方向,下一节文本分类(3)-对处理后的数据使用KNN、朴素贝叶斯和SVM分类方法。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。