我正在做一个简单的二进制分类,我给你一个问题的例子:让我们说 n 文件(Doc 1,Doc 2,...,Doc n。)我们将使用TF-IDF作为特征值来训练使用词袋的二元分类器。我们的培训文件具有 m 功能(从技术上讲,这是我们在清理和预处理后的所有这些n文档中拥有的唯一令牌的数量)。
现在,假设我们有一个训练有素的模型,我们将预测新文档的标签。我们应该首先以与培训文档相同的方式预处理测试文档。然后,我们应该使用TF-IDF为我们的测试文档构建一个特征向量。这里有两个问题:
所以现在我只想弄清楚我们如何使用我们用词袋模型和TF-IDF值训练的模型来标记新文档。特别是,我正在寻找上面提到的两个具体问题的合理答案。
我们可以计算模型的准确性(例如使用交叉验证)但我不知道我们应该如何标记新文档。
P.S。我正在使用scikit-learn和python。
更新:我可以找到问题的答案。在这种情况下,我们可以简单地使用我们用来训练分类器的 TfidfVectorizer 。所以现在每次我训练一个新的分类器并使用tfidfVectorizer构建我的特征向量时,我使用 pickle 将我的矢量化器保存在一个文件中,并在创建测试集特征向量时使用此向量化器。 / p>
答案 0 :(得分:-3)
我无法科学地支持这一点,但您可以尝试使用 m 功能的字典,并计算测试集上这些功能的TF-IDF分数。这样做的是为每个测试文档创建一个矢量,该矢量与列车矢量大小相同,并与训练模型时使用的相同特征相关联。您必须使用训练集中未显示在测试集中的单词来解决问题。
我可以问你为什么使用TF-IDF而不是Naive Bayes或Random Forests?