作者:刘丽帆 封面:吉江
注:分类算法KNN第一篇文章,请点击 文本自动分类——分类算法KNN(K最邻近)应用(一)![02b44445dd62186e4d12a213b75c4ea0.gif](https://i-blog.csdnimg.cn/blog_migrate/105d6486e57fc0530c4185cdf80ed4cc.gif)
![9bdf2be7de1e1cc91345891b3774341e.gif](https://i-blog.csdnimg.cn/blog_migrate/2c4dfd3e81865d61b109d0e8ea006de3.gif)
先对算法做一个简单的介绍,KNN算法,即K最邻近算法(K Nearest Neighbor),属于基本的分类算法之一,在中文的文本分类中效果较好。该算法是在训练集中找到与需要进行分类的文档x最相似的k个文档(一般用夹角余弦公式计算两个文档的相似度,这也是上一篇推文中为何要学习特征与权重),根据这些文档来判断x属于哪个类别。k的取值一般为奇数且不超过20,与数据集的大小有关。这也很好理解,例如与文档x相似的文档有5篇,其中属于A类的有2篇,属于B类的有3篇,那么就可以认为文档x属于类别B,若k取偶数时,遇到每个类别中的样例个数相同时,不好确定类别。
在这篇文章中,作者将数据集中每一篇论文的标题、关键词和摘要的文本内容进行合并作为一篇文档,然后根据特征词表过滤文档,用特征向量表示每一篇文档。每个学科中训练集和测试集大小为1:9,然后进行实验。
本次推文就采用一个小例子用KNN算法实现文档自动分类,同时学习TF-IDF算法的原理并实现这一算法,了解将文本转化为向量的具体实现过程(因为文档数量较少和文章长度较短的情况下存在词频矩阵过于稀疏的现象,因此为简单起见,数据为虚构)。
我们用一个表格来体现文本训练集与测试集文档的特征矩阵。表格里第一行的标题T代表特征词(实际可以为任意代表特征的词语),D代表文档,Train代表训练集,Test代表测试集。利用训练集D1-D9对测试集D10和D11进行分自动类。
根据上一篇推文介绍的TF-IDF算法公式,我们逐个计算其中的参数:TF(特征词在一篇文档中的词频)和IDF(特征词的逆文档频率)。例子中的数据量很小,对于一些值的获取可以直接计数得到。TF是用某个词在文章中出现的次数除以文章的总词数。DF(特征词的文档频率)可以直接计算,从表格中得到T1在5篇训练集文档中出现,T2在5篇中出现……最后得到所有特征词的df = [5, 5, 6, 6, 3, 7, 3, 6],再用math模块里的log函数求得idf。用TF-IDF向量表示所有文档。
![ad00d217c09edc18d531fa722f73182b.png](https://i-blog.csdnimg.cn/blog_migrate/250c273b209704cf84e3588c04520bc6.jpeg)
南京理工大学情报学硕士
方向:信息检索、数据分析与自然语言处理
学堂君的历史合辑:
菜鸟系列
问卷系列
线性回归
信效度分析
聚类分析
时间序列
常见问题
神经网络
多维尺度分析
C4.5算法
生存分析
正态检验
对应分析
问卷数据分析
权重赋值
判别分析
欢迎添加:
【数据分析服务】请点击菜菜帮工作室正式上线
【社群服务助手】请点击SPSS学堂会员3群招募
【加入团队】请点击招募,我们是认真的!