Python 朴素贝叶斯多项式模型

Python 朴素贝叶斯多项式模型,python,machine-learning,scikit-learn,classification,naivebayes,Python,Machine Learning,Scikit Learn,Classification,Naivebayes,对于电影评论数据集,我正在创建一个朴素的贝叶斯多项式模型。现在,在培训数据集中,每个流派都有评论。因此,与其为电影评论数据集创建一个忽略体裁特征的通用模型,我如何训练一个模型,该模型除了考虑与评论中出现的单词相关的tf-idf外,还考虑体裁特征。我是否需要为每种类型创建一个模型,或者我可以将其合并到一个模型中 Training Dataset Sample: genre, review, classification Romantic, The movie was really emotiona

对于电影评论数据集,我正在创建一个朴素的贝叶斯多项式模型。现在,在培训数据集中,每个流派都有评论。因此,与其为电影评论数据集创建一个忽略体裁特征的通用模型,我如何训练一个模型,该模型除了考虑与评论中出现的单词相关的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

考虑将
genre
视为一个分类变量,可能使用虚拟编码(请参见
pd.get_dummies(df['genre'])
),并将其与tf idf分数一起输入到模型中

还考虑其他模型类型,除了朴素贝叶斯之外,神经网络涉及变量之间的更多交互,并且可以更好地捕捉流派之间的差异。Scikit learn还有一个值得一看的

MLPClassizer
实现。

从中可以看出,
多项式分布通常需要整数特征计数。作为输入提供的分类变量,特别是如果它们被编码为整数,可能不会对模型的预测能力产生积极影响。如上所述,你可以考虑使用神经网络,或者完全删除流派列。如果在拟合模型后,仅对文本特征显示出足够的预测能力,则甚至可能不需要添加分类变量作为输入

我尝试此任务的方法是使用文本特征的虚拟分类值,并将堆叠数组与目标标签一起提供给模型。然后,您将执行超参数的最佳选择