如何将额外的列车数据集成到朴素贝叶斯中?

2024-06-16 15:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我用naivebayeslibrary(Python)做了一个web分类的例子,效果很好(对web页面进行了很好的分类)。你知道吗

实际上我有两个问题。首先

我只使用网页的内容(文章方面)。这没问题,但是,我想整合标题与双重加权效应的输出。我可以检索变量列表名为titles[]的页面的标题。这是我的分类代码:

x_train = vectorizer.fit_transform(temizdata)
classifer.fit(x_train, y_train) 

我可以在文章文本中添加标题,但这次文章文本和标题的权重相同。你知道吗

在代码中,temizdata是我保存网页文章文本的列表。而y_train是类。如何将标题[]集成到具有双重权重的分类中?你知道吗

我使用Countvectorizer进行向量化,使用naivebayes多项式nb分类器。你知道吗

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
vectorizer = CountVectorizer()
classifer = MultinomialNB(alpha=.01)

Tags: 代码文本web网页标题列表文章分类
1条回答
网友
1楼 · 发布于 2024-06-16 15:29:39

如果我正确地理解了您的问题,那么您需要使用从文本和标题派生的字数统计功能。标题中的特征应该比文本特征获得两倍的权重。我认为在这种情况下(如果可能的话)为特征分配优先权是没有意义的。毕竟,你做机器学习是因为你想让电脑知道哪些功能更重要。你知道吗

我建议你可以尝试两种方法:

  1. 功能合并从文本体生成x_text_train,从标题生成x_title_train,并按如下方式合并它们:

    x_text_train= text_vectorizer.fit_transform(temizdata)
    x_title_train= title_vectorizer.fit_transform(titledata)
    x_train = np.hstack(x_text_train, x_title_train)
    

    确保对文本和标题使用两个单独的矢量器,以便分类器了解文本特征和标题特征之间的区别。如果其中任何一个特征更重要,分类器应该解决这个问题。

  2. hierarchical classification:像你已经做的那样,在文本上训练一个分类器。训练另一个分析员的标题。最后,在前两个分类器的输出上训练第三个分类器。

编辑:

  1. 如果你真的希望标题的重要性是文本的两倍,你可以训练两个不同的分类器(就像在分级分类中)并取它们输出的加权平均值(如果输出是类概率)。你知道吗

相关问题 更多 >