基于Python的TF-IDF矩阵人工智能实验

人工智能实验TF-IDF矩阵
目录
人工智能实验TF-IDF矩阵 1
一、 TF-IDF矩阵表示 1

  1. 算法原理 1
  2. 伪代码 2
  3. 代码展示 4
  4. 实验结果及分析 7
    二、 KNN分类任务 8
  5. 算法原理 8
  6. 伪代码 8
  7. 代码展示 10
  8. 创新点 14
  9. 实验结果及分析 16
    三、 KNN回归任务 19
  10. 算法原理 19
  11. 伪代码 20
  12. 代码展示 21
  13. 实验结果及分析 24
  14. 思考题 27
    二、 KNN分类任务
  15. 算法原理
    首先对训练集进行学习。在本题中,训练集的每个数据由两部分组成:文档和标签。文档是一句话,含有多个单词,标签是一个描述情绪的单词,是需要用文档预测的结果。使用KNN进行分类的基本过程是:将文档进行编码,统计文档中的单词。在测试时比较测试样本和训练样本的距离,选取若干个距离最近的训练样本,由这几个训练样本的标签来判断测试样本的标签。具体算法如下:
    首先使用TF-IDF矩阵形式编码文档,具体做法参见上文。
    同样,读入测试集后,每个测试集样本也用TF-IDF编码表述为向量形式。需要注意的是测试集在计算TF-IDF矩阵时使用的IDF向量应该是通过训练集的出来的IDF,从而保证每个单词在整个文档中的重要程度的一致。将测试样本和训练集样本一一比较,并且选择距离最小的几个。具体选择几个记为变量K,K的取值不同会对模型产生影响,这会在之后的实验结果分析部分讨论。描述训练集和测试集样本距离的方式是Lp距离:
    在这里插入图片描述

该公式表示向量 x i x_i xi x j x_j xj之间的Lp距离,公式内的l表示向量的维度。将两个向量各个维度对应的数值相减后求q次方,再把各个维度的结果加和,最后再开p次方根,就得到了Lp距离的结果。这里的p也是一个可以调整大小的变量,取值在之后的实验结果分析进行讨论。
在找出了K个和测试样本最近的训练样本后,由训练样本的标签决定测试样本的标签。这里采用多数投票的方法,即选取K个训练样本中出现次数最多的那个标签作为结果。

首先要将训练集进行TF-IDF编码。具体做法和上文一样。
在对文档进行编码的同时,也要将文档对应的标签给记录下来:
emt = {}
/* emt即emotion,记录情绪标签。emt为字典,如emt[5]='sad'表示5号文档的标签为sad */
for eachEmt in 全部文档:
	emt[当前文档编号] = eachEmt
end
这样一来,就能记录各个文档的TF-IDF编码以及对应的标签emt了。
在测试时,将测试样本进行TF-IDF编码可以不需要读入整个训练集再计算。因为使用的IDF向量已经由训练集得到,每次读取一行,即一个测试样本,直接对其进行距离运算即可。
 for i in 全部的训练样本			/* 和全部的训练样本进行比较 */
    diff = 0.0					/* diff表示样本距离 */
   	for eachWord in tf_idf:		/* 检索每个单词,如果在当前训练样本或测试样本中出现则更新diff */
    	if eachWord出现在测试样本或当前训练样本中	
    		then diff += 因eachWord增加的Lp距离项
    end
    diff = diff ^ (1/p)
end

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值