我做了一个关于使用Naive Bayes库(Python)进行Web分类的示例,并且完美地工作(很好的分类网页)。
其实我有2个问题。首先,
我只使用网页内容(文章方面)。这没问题但是,我希望将标题与双重加权效果整合到输出中。我可以检索变量列表名称为titles []的页面标题。这就是我的代码:
x_train = vectorizer.fit_transform(temizdata)
classifer.fit(x_train, y_train)
我可以为文章文字添加标题,但这次文章文章和标题具有相同的权重。
在代码中,temizdata
是我的列表,用于保存网页的文章文本。而y_train
是课程。如何将title []与双重加权分类?
我使用了Countvectorizer进行矢量化,使用Naive Bayes MultinominalNB分类器。
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
vectorizer = CountVectorizer()
classifer = MultinomialNB(alpha=.01)
答案 0 :(得分: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)
确保为文本和标题使用两个单独的矢量化器,以便分类器了解文本功能和标题功能之间的区别。如果任何特征更重要,分类器应该可以解决这个问题。
做hierarchical classification:在文本上训练一个分类器,就像你已经做过的那样。在标题上训练另一个分类器。最后,在前两个分类器的输出上训练第三个分类器。
修改强>