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



我用朴素贝叶斯库(Python(做了一个关于Web分类的例子,它工作得很好(classfy网页非常好(。

其实我有两个问题。首先

我只使用网页的内容(文章端(。没问题,但是,我希望输出具有双重加权效果的集成标题。我可以检索变量列表名称为标题[]的页面标题。这是我的classfy代码:

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

我可以为文章文本添加标题,但这次文章文本和标题具有相同的权重。

在代码中,temizdata是我的列表,它保留了网页的文章文本。 y_train是类。如何将标题[]集成到具有双重加权的分类中?

我使用Countvectorizer进行矢量化,并使用朴素贝叶斯MultinominalNB分类器。

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

正确理解了您的问题,您希望使用从文本和标题派生的字数统计功能。标题中的要素的权重应是文本要素的两倍。我认为在这种情况下为特征分配先验权重是没有意义的(如果可能的话(。毕竟,你做机器学习是因为你想让计算机找出哪些特征更重要。

我建议您可以尝试两种替代方法:

  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. 进行分层分类:在文本上训练一个分类器,就像你已经做的那样。 在标题上训练另一个分类器。最后,在前两个分类器的输出上训练第三个分类器。

编辑:

  1. 如果你真的希望标题的重要性是文本的两倍,你可以训练两个单独的分类器(如分层分类(,并取它们输出的加权平均值(如果输出是类概率(。

相关内容

  • 没有找到相关文章

最新更新