关于使用独立数据集通过 weka 验证文本分类的问题

     2023-03-13     23

关键词:

【中文标题】关于使用独立数据集通过 weka 验证文本分类的问题【英文标题】:questions about using a standalone dataset to validate text classification with weka 【发布时间】:2012-08-24 16:50:43 【问题描述】:

我正在尝试使用 weka 对垃圾邮件和非垃圾邮件进行分类。

将 100 条带标签的垃圾邮件和另外 100 万条带标签的非垃圾邮件作为训练数据集,我使用 stringtowordvector 作为过滤器来训练分类器。 crossValidateModel 的结果非常好。但是我想使用独立的测试集来评估分类器,以确保将任何其他 msg 从训练集中分类出来是可靠的。

我的问题:

我也必须在测试数据集上使用stringtowordvector,以创建独立于训练 arff 文件的独立 .arff 文件。两个数据集中出现的同一个词有 2 个不同的属性索引,分别在这 2 个 .arff 文件中。例如,单词“money”在训练.arff 文件中具有矩阵索引10,但在测试.arff 文件中它被索引为50th 属性。

我担心已经训练好的分类器会与 2 个数据集中的所有这些词不匹配,因为它们具有不同的矩阵索引。更具体地说,训练中的向量 1 1,2 1,3 5 .arff 代表 "i want to to to to to....",但在测试.arff 文件这个相同的向量代表"money does not not not not ....."。那么,这个验证如何可靠呢?

crossValidateModel 使用来自同一个 arff 文件的实例,因此 weka 必须正确匹配索引和单词。我的目标是用大量标记的数据集训练它,然后用它来分类任何单个未标记的味精。每次我想对单个味精进行分类时,我都必须将此味精转换为一个 .arff 文件,该文件具有与训练 .arff 文件完全不同的属性列表和矩阵索引。 (我没有使用 windows 工具,我在我的程序中使用了 weka .jar api)。 有什么帮助吗?

【问题讨论】:

您能否详细说明为什么向量以这种方式表示您在此处提供的两个示例的字符串。为什么你把“to”和“not”这个词重复了这么多次? 还要考虑交叉验证在评估分类器质量方面通常比手动拆分训练测试集更稳健。这是因为它确实对整个数据集的不同子集进行了多次训练和测试,然后对结果进行平均,确保您总体上而不是偶然做得很好。见 en.wikipedia.org/wiki/…> 致 Abhishek Shivkumar,对于不清楚的例子,我很抱歉。我只想表达:训练集和测试集以不同的方式表示字符串。例如,1 1,2 1,3 5-> “我要到到到”,1->我,2->想要,3->到,所以“到”重复5次。但可能在测试集中,.,1 1,2 1,3 5->"money not not not not not",where 1->money,2->does,3->not,here" not" 重复 5 次,相同的向量,但不同的字符串,weka 如何验证这个测试集的分类?我希望我清楚,tks to kaz:tks,我知道交叉验证会做得很好。但我的目标是在未来对新实例进行分类(例如用户生成的内容,而不是我们已经拥有的内容),所以使用训练有素的分类器来判断我的生产系统中的味精 【参考方案1】:

您需要从您的训练集创建一个特征映射文件,以实现您想要的。特征图文件通常采用以下格式:

someword:1
someotherword:2
yetanotherword:3
...

这有效地将每个单词映射到某个索引。因此,您要做的是遍历训练集中的所有文件,并将训练集中存在的每个单词映射到一个唯一的 id,该 id 将代表单词在 ARFF 中的索引。

假设您的训练集包含一个带有 "i want to to to to to make money" 字样的文件,那么您的特征图将如下所示:

i:1
want:2
to:3
make:4
money:5

您的 ARFF 中的属性如下所示:

@ATTRIBUTE i NUMERIC
@ATTRIBUTE want NUMERIC
@ATTRIBUTE to NUMERIC
@ATTRIBUTE make NUMERIC
@ATTRIBUTE money NUMERIC

每个属性代表单词在电子邮件中出现的次数。

然后,如果您想为测试集创建 ARFF,您需要遍历测试集中的所有文件,并且对于遇到的每个单词,请在特征图中查找。如果这个词在你的特征图中,你就知道在那个词映射到的索引处增加属性的值。如果这个词不在你的特征图中,那么你就忽略它,因为你的分类器没有接受过这个词的训练,甚至不知道这个词的存在。

这将使您的训练集的属性与您已完美对齐的任何测试集的属性保持一致。

我建议您将特征映射文件作为 Java HashMap<String, Integer> 从单词 (String) 映射到属性索引 (Integer) 读取,以便在获取测试集电子邮件的属性值时快速查找单词.

【讨论】:

如何在 weka 中添加恶意特征进行分类作为数据集

...发布时间】:2013-01-2203:06:00【问题描述】:我正在做一个关于如何使用weka数据挖掘工具检测和分类恶意内容的项目。我开发了一种算法,但问题是我不知道如何以及在何处添加javascript、html或URl的恶意功能。例如:如果有(///)... 查看详情

如何在 Weka Explorer 中应用分类器?

...(例如J4.8树)并通过交叉验证对其进行了评估。我如何使用此模型对新数据集进行分类?我知道,我可以使用“提供的测试集”选项设置要分类的数据文件,在“更多选项”窗口中标记“输出预测”并再次运行分类。它会产生... 查看详情

weka中的一元类文本分类?

...:04【问题描述】:我有一个特定类别(比如癌症)的训练数据集(文本)。我想在weka中为这个类训练一个SVM分类器。但是,当我尝试通过创建一个文件夹“cancer”并将所有这些训练文件放入该文件夹来执行此操作时,当我运行... 查看详情

如何在weka中预处理数据以进行分类

...入weka。但是当我想启动分类器时,它没有向我显示任何关于正确分类的实例和不正确分类的实例的任何信息。我想根据状态栏进行分类。我想我必须在这里进行某种预处理,因为状 查看详情

如何在 Weka 中对训练和测试数据集进行分类

...inWeka【发布时间】:2021-12-0719:09:18【问题描述】:我正在使用Weka软件对模型进行分类。我对使用训练和测试数据集分区感到困惑。我将整个数据集的60%划分为训练数据集并将其保存到我的硬盘中,并将40%的数据用作测试数据集... 查看详情

weka 中用于推文分类的 N 折交叉验证

...【发布时间】:2014-03-2100:19:36【问题描述】:我的目标是使用weka将一堆推文分类为一组预定义的3个类别(例如新闻、教育、体育)在这种情况下,训练集和测试集是不同的。(训练冗长的网页,只测试一两行推文)。如何针对... 查看详情

sklearn:文本分类交叉验证中的向量化

...ion【发布时间】:2014-05-0512:43:51【问题描述】:我有一个关于在sklearn的文本分类中使用交叉验证的问题。在交叉验证之前对所有数据进行向量化是有问题的,因为分类器会“看到”测试数据中出现的词汇。Weka有过滤分类器来解... 查看详情

weka中如何对整个数据集进行分类

...照方法train-test(2/3-1/3)了解我的TPR和FPR率,并且我得到了关于我的测试(1/3)的预测,但我需要知道对所有6836个实例的预测。我该怎么 查看详情

在 WEKA 上分析数据集

...是WEKA的新手,请问是否有人可以帮助我了解我是否正确使用了WEKA。1)我有一个包含11377记录的数据集,分类如下:11111条记录的类别为YES266条记录的类别为NO(出于某种原因,我只能使用J48算法进行分类)当我选择J48算法进行分... 查看详情

WEKA - 分类 - 训练和测试集

...estSet【发布时间】:2016-04-0409:47:16【问题描述】:我正在使用3个不同的分类器执行分类问题,即决策树、朴素贝叶斯和IBK。我有两个数据集,它们的布局和属性名称相同,但每个数据集的值不同。TrainingSetExample;StatePopulationHouseho... 查看详情

为多标签文本分类转换数据集

...501:51:10【问题描述】:我正在通过深度学习模型进行一些关于多标签分类的实验。但是我遇到了数据集的问题。我使用Keras、TensorFlow2.0、numpy、pandas。我有一个数据集,格式如下:DatasetintheformthatIhaveit 查看详情

使用 Weka 进行分类没有给出精度、Fmeasure 和 MCC 的任何结果

】使用Weka进行分类没有给出精度、Fmeasure和MCC的任何结果【英文标题】:ClassificationUsingWekadidnotgiveanyresultforprecision,FmeasureandMCC【发布时间】:2021-12-0721:11:52【问题描述】:我有一个数据集。数据集有一些分类值和一些离散值。我... 查看详情

在 weka 中识别错误分类的元组

...inweka【发布时间】:2017-05-1712:32:46【问题描述】:当我们使用交叉折叠验证时,如何?【问题讨论】:【参考方案1】:不要这样做。如果你监视你的错误,它会导致过度拟合。不要窥探测试数据。如果您想研究一些错误分类,... 查看详情

weka 中的机器学习分类和预测

...学习很陌生。对不起,如果我的英语有任何错误。我正在使用wekaJ48分类来预测真假。我有将近999K的训练集用于训练模型。我使用了3折交叉验证方法来训练模型,其准确率约为84%。现在在存储模型之后。我试图在50k数据集上对其 查看详情

Weka 中 SMO、NaiveBayes 和 BayesNet 分类器的不同结果

...【发布时间】:2014-03-2803:01:20【问题描述】:我正在我的数据集上尝试不同的Weka分类器。我有一个小数据集,我将我的数据分为五类。我的问题是,当我通过不同的分类器应用交叉验证或百分比拆分分类时,我得到的结果非常... 查看详情

Weka SMO 分类器不断返回一个结果

...布时间】:2014-05-3119:12:51【问题描述】:我在我的项目中使用WEKA。我使用SVM(SMO)对结果进行分类。我首先收集了训练集数据并进行了10倍交叉验证。然后我用这些训练集构建了一个分类器并让它实时运行,这意味着实时提取特征... 查看详情

通过 Java 代码在 Weka GUI 和 Weka 中得到不同的结果

...vacode【发布时间】:2013-12-2516:57:30【问题描述】:我正在使用NaiveBayesMultinomialText分类器在Weka中应用文本分类。问题是,当我使用GUI执行此操作并在相同的火车数据上进行测试(没有交叉验证)时,我得到93%的准确率,而当我尝... 查看详情

数据挖掘和 weka

...求搜索至少20个不同的数据集,最多40个数据集。我需要使用WEKA软件对所选数据集应用以下分类技术:(1)决策树(SimpleCart),(2)朴素贝叶斯和(3)K-NN(IBk)(K取1的值直到数据集中的类标签数量)在所有数据集上应用WEKA后,需要... 查看详情