sklearn-LDA主题分析和用户推荐

LDA主题分析主要应用于文本分类和预测中,并可以做推荐依据进行针对推荐。

本文没有任何数学公式,只是给出了进行LDA分析的流程。

步骤:

1.给定不同主题(主题是未知的)的多篇文本,并已经进行分词处理,并删去停用词,如以下格式

你们  来  这里  吃  饭  觉得  饭  很  好  吃

2.读取数据进内存,同篇一文本放在同一个字符串中,多篇文本形成一个一维数组。

3.由文本数组得到词向量初始化容器(可以想象为一个把数据转化为训练形式的对象的容器)。

4.由文本数组经过词向量初始化容器得到训练词向量(一般是计算词频)。

5.给定一篇或多篇测试文本,处理方法如上训练文本,但不需要获得词向量,而是根据获得的词向量来初始化测试文本数组,得到其对应的测试词向量数据。

6.确定主题数,迭代次数等一系列参数,得到LDA对象,对于初学者建议只改变主题数,这样不会被太多参数弄得烦躁。主题数量一般参考自训练数据的数量和离散程度,一般不超过训练数据的数量。当然也可以在后面训练多个LDA对比选取拟合程度最好的主题数目。

7.使用训练词向量训练LDA对象,得到一个已经训练好的训练模型。

8.将测试词向量做参数,传入LDA的transform函数中,得到一个结果。是一个一维数组,行数和测试集相同,列数是主题个数,对应测试元素是当前主题的概率。

至此,一般的确定文本主题就结束了,但是如果你还想做推荐的话,可以继续看下去。

9.结果的每一行中,只要有一列数值大于0.6,就认为他符合该主题,假如我们的训练集是同一个用户的,那么我们认定训练集上所有的主题都是用户的兴趣所在,只要结果中给定一行的符合某一个主题,我们就认为用户可能对这一个数据感兴趣。然后计算正确率就很简单了。

我做的时候有一个700条数据的数据集,数据聚合程度较高,28分测试和训练,得到的正确率大概在0.97.但是另一个4000条数据的数据集,离散程度较高,正确率只有0.9,当然你可以改变主题数,提高正确率,但是我提高了主题数反而正确率下降到0.87了,之后我会做下一步处理。

代码有人要可以评论,本文使用的是python 3.6  +sk-learn

你可能感兴趣的:(机器学习)