朴素贝叶斯多项式模型

时间:2018-09-17 19:10:22

标签: python machine-learning scikit-learn classification naivebayes

对于电影评论数据集,我正在创建一个朴素的贝叶斯多项式模型。现在,在训练数据集中,每种类型都有评论。因此,除了为影片评论数据集创建通用模型而不忽略类型特征之外,我如何训练一个模型,该模型还应考虑类型特征以及与评论中出现的单词相关的tf-idf。我需要为每种类型创建一个模型,还是可以将其合并到一个模型中?

Training Dataset Sample:
genre, review, classification
Romantic, The movie was really emotional and touched my heart!, Positive
Action, It was a thrilling movie, Positive
....

Test Data Set:
Genre, review
Action, The movie sucked bigtime. The action sequences didnt fit into the plot very well

2 个答案:

答案 0 :(得分:1)

documentationThe multinomial distribution normally requires integer feature counts。作为输入提供的分类变量,尤其是如果将它们编码为整数时,可能不会对模型的预测能力产生积极影响。如上所述,您可以考虑使用神经网络,也可以完全删除类型栏。如果拟合后模型仅对文字特征具有足够的预测能力,甚至可能没有必要添加分类变量作为输入。

我尝试此任务的方式是通过stacking具有文本特征的虚拟分类值,并将堆叠的数组以及目标标签一起提供给SGD模型。然后,您将执行GridSearch以最佳选择超参数。

答案 1 :(得分:0)

请考虑将genre作为类别变量,可能使用伪编码(请参见pd.get_dummies(df['genre'])),并将其以及tf-idf分数输入模型中。

除朴素贝叶斯外,还应考虑其他模型类型-神经网络涉及变量之间的更多相互作用,并且可能有助于更好地捕获流派之间的差异。 Scikit-learn也有一个MLPClassifier实现,值得一看。