在MATLAB中将TFIDF与朴素贝叶斯结合使用

时间:2018-07-18 12:55:11

标签: matlab tf-idf naivebayes

我正在使用TFIDF和朴素贝叶斯建立情感分类模型。但是该模型不断对第二类进行错误分类。尽管我将TFIDf与其他模型(例如SVM和随机森林)一起使用,但效果很好。下面,我将描述我的数据和使用的步骤:我有2000条评论(1000条肯定,1000条否定)。我做了以下步骤:  1)数据预处理

cleanTextData = erasePunctuation(textData);
cleanTextData = lower(cleanTextData);
words = stopWords;
cleanDocuments = tokenizedDocument(cleanTextData);
cleanDocuments = removeWords(cleanDocuments,words);
cleanDocuments = normalizeWords(cleanDocuments);  
cleanDocuments(1:10)
%% Bag of Words
cleanBag = bagOfWords(cleanDocuments)
cleanBag = removeInfrequentWords(cleanBag,2) % remove words with frequency less than or equal 2
%% remove emplty documents caused by preprocessing
[cleanBag,idx] = removeEmptyDocuments(cleanBag);

然后我使用了TFIDF

predictors = tfidf(cleanBag,'Normalized',true,'TFWeight','log','IDFWeight','smooth');

然后将结果传递给我的朴素贝叶斯模型

t = templateNaiveBayes('DistributionNames','mvmn');
CVMdl = fitcecoc(predictors,response,'KFold',10,'Learners',t,'FitPosterior',true,'Coding','onevsone','ResponseName','response'); 

但是混淆矩阵将给出以下结果:

C1     C2
 ____    __
  990    10
 1000     0

似乎几乎将所有2000个观测值仅分类为一个类。请注意,我尝试更改K折叠值,还尝试了不同的分布类型,例如多元多项式分布,多项式分布,核和正态(高斯)分布,还尝试对数据进行规范化。但是我所有的尝试都没有对模型的增强产生影响。 使用没有TFIDF的朴素贝叶斯将给出0.7536 F值,这在某种程度上被认为是不错的。 我担心的是,我是否以正确的方式将TF-IDF与朴素的贝叶斯配合使用。因为对第二类的所有观察结果进行了错误分类。

0 个答案:

没有答案