KNN回归

一、算法思想

1. 首先分别读取训练集和验证集的csv文件数据,分别将数据传到列表sample_list、validation_list,通过两层循环建立无重复词语列表word_list,分别构建训练集和验证集的one_hot矩阵,对每一行的句子的每一个词语,找出词语在word_list出现的下标,在one_hot矩阵相应的对应位置置为1。

2. 采取不同的度量方式,分别有汉明距离、杰卡德距离、余弦相似度、曼哈顿距离、欧式距离,比较不同度量方式的准确率。对于验证集的每一行句子,采用字典结构存储当前句子与训练集所有句子的距离或余弦相似度,字典的key为训练集句子的下标,value为验证集当前句子与训练集句子的距离或者余弦相似度,利用operator模块对字典进行排序(距离按照从小到大排序,余弦相似度从大到小排序),选出前k个作为最终选取的参考,此时结构为列表,每个元素为一个元组,每个元组包含两个元素,第一个为训练集句子下标,第二个为距离或相似度。

3. KNN回归第3步跟KNN分类博客的第3步不同,以余弦相似度为例,首先将k个相似度乘以15+1的5次方(经测试相关系数最高)作为权重,相加起来得到总权值,根据当前相似度的权值/总权值作为比重,以joy情感为例,则预测joy的概率p = p_1*n_1+p_2*n_2+...+p_k*n_k,依次类推,得到最终的预测值,计算相关系数,比较准确率。

 

二、流程图

KNN回归_第1张图片

 

三、实现

1. 构造one-hot矩阵和距离计算方式与KNN分类篇相同。

2. 根据k个推荐值对各个情感的概率进行加权归一。

KNN回归_第2张图片

 

四、评测指标

KNN回归_第3张图片

你可能感兴趣的:(KNN回归)