【发布时间】:2020-06-28 15:46:19
【问题描述】:
我有一个电影评论数据集,我想对其进行情感分析。
我已经使用逻辑回归实现了这一点。以下是我在此过程中采取的步骤:
- 从数据集中的每一行中删除了停用词和标点符号。
- 将数据拆分为训练集、验证集和测试集。
- 从训练集中创建了一个词汇表。
- 将词汇表中的每个单词都添加为一项功能。如果该词在当前行,则将其 TF-IDF 值设置为特征值,否则将值设置为 0。
- 训练模型。在训练过程中,sigmoid 函数用于计算假设,交叉熵损失用于成本函数。然后使用梯度下降,更新模型的权重。
- 使用验证集调整超参数
- 使用测试集评估模型
现在,我需要使用朴素贝叶斯来实现同样的事情,我对如何解决这个问题感到困惑。我假设前 4 个步骤将是相同的。但是使用朴素贝叶斯的训练步骤是什么?在这种情况下,损失函数和成本函数是什么?我在哪里使用贝叶斯定理来计算条件概率?以及如何更新权重和偏差?
我在网上搜索了很多资源,但我大多只找到了使用带有 model.fit 和 model.predict 的 sklearn 的实现,我很难弄清楚这背后的数学原理以及它是如何实现的使用 vanilla python 实现。
【问题讨论】:
-
对于Cross Validated 或Data Science 可能是一个更好的问题,因为它与基础数学和理论有关,而您没有minimal reproducible example 可以分享。话虽如此,尽管您想从头开始编写代码,但 sklearn docs 是一个很好的基础数学起点,包括方程式、分类算法的描述和论文链接
-
另外,你也可以去page for each NP classifier type,在标题附近的右上角,你可以点击source code的链接,看看究竟他们是如何在
.fit方法中实现它的(GaussianNB 以示例为目的链接) -
@G.Anderson 感谢您的回复。我是朴素贝叶斯的新手,我只需要知道我是否需要计算使用朴素贝叶斯分类的权重和偏差,或者我只需要比较一个句子的两个条件概率是正面还是负面,然后选择最高的作为预测类?
标签: python machine-learning sentiment-analysis naivebayes