gpt4 book ai didi

python - 选择 sklearn 管道对用户文本数据进行分类

转载 作者:行者123 更新时间:2023-11-30 09:11:44 24 4
gpt4 key购买 nike

我正在使用 Python 开发机器学习应用程序(使用 sklearn 模块),目前正在尝试确定用于执行推理的模型。问题简要描述:

鉴于用户数据的许多实例,我尝试根据相对关键字包含将它们分类为各种类别。它是受监督的,所以我有很多很多已经分类的预分类数据实例。 (每条数据在2到12个字左右。)

我目前正在尝试在两种潜在模型之间做出决定:

  1. CountVectorizer + 多项式朴素贝叶斯。使用 sklearn 的 CountVectorizer 获取训练数据中的关键字计数。然后,使用 sklearn 的 MultinomialNB 模型使用朴素贝叶斯对数据进行分类。

  2. 对关键字计数使用 tf-idf 术语权重 + 标准朴素贝叶斯。使用 CountVectorizer 获取训练数据的关键字计数矩阵,使用 sklearn 的 TfidfTransformer 将该数据转换为 tf-idf 加权,然后将其转储到标准朴素贝叶斯模型中。

我已经阅读了这两种方法中使用的类的文档,两者似乎都很好地解决了我的问题。

对于此类问题,使用标准朴素贝叶斯模型进行 tf-idf 加权可能优于多项式朴素贝叶斯,是否有任何明显的原因?这两种方法都存在明显的问题吗?

最佳答案

Naive Bayes 和 MultinomialNB 是相同的算法。您得到的差异来自 tfidf 转换,它会惩罚语料库中许多文档中出现的单词。

我的建议:使用 tfidf 并调整 TfidfVectorization 的 sublinear_tf、二元参数和归一化参数以获取特征。

还可以尝试 scikit-learn 中提供的各种不同的分类器,如果您正确调整正则化类型(罚分八分之一 l1 或 l2)和正则化参数(alpha)的值,我怀疑它们会给您带来更好的结果。

如果你正确地调整它们,我怀疑你可以使用带有“log”损失(逻辑回归)或“hinge”损失(SVM)的 SGDClassifier 获得更好的结果。

人们通常调整参数的方式是通过 scikit-learn 中的 GridSearchCV 类。

关于python - 选择 sklearn 管道对用户文本数据进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34735016/

24 4 0
文章推荐: graph - 如何利用无向图中的已知信息进行预测
文章推荐: javascript - 获取此