2

我正在尝试使用本机贝叶斯分类器来检测欺诈交易。我在 Excel 表中有大约 5000 个样本数据,这是我将用于训练分类器的数据,我有大约 1000 个测试数据,我将在其上应用测试分类器。

我的问题是,我不知道如何训练分类器。在将训练数据传递给训练分类器之前,我是否需要将其转换为某种特定格式。训练分类器如何知道哪些是我的目标值,哪些是它的特征。

有人可以帮帮我吗?

4

1 回答 1

8

为了测试你的数据,你需要确保你的训练集有一些标签,或者已经根据你在数据收集集中使用的一些特征分成了块。我不确定您是如何组织数据的,但您需要将数据集拆分为类似特征的块。

根据您的标准创建拆分后,请检查输入数据的创建。您可以使用以下方法验证文件:

hadoop fs -ls filename

使用以下方法训练您的分类器:

$MAHOUT_HOME/bin/mahout trainclassifier -i input_file -o output_model

使用以下方法测试分类器:

$MAHOUT_HOME/bin/mahout testclassifier -m output_model -d input_file 

注意:请注意,在数据收集期间,您需要确保为某些数据值(如果存在)分配权重。在实验设置或数据收集过程中,还必须进行数据清理以标准化错误。您可以对数据集使用任何乘法散射校正技术来校正它。

首先,有一个名为 的文件 training-categories.txt,其中包含分类器的类别。您可以使用简单的文本编辑器来执行此操作。

现在我们有了一个我们感兴趣ExtractTrainingData的类别列表,使用类别列表运行该类。

$TT_HOME/bin/tt extractTrainingData \
--dir ./index \
--categories ./training-categories.txt \
--output ./category-bayes-data \
--category-fields categoryFacet,source \
--text-fields title,description \
--tv

此命令将读取文档并在类别和来源字段中搜索匹配的类别。当在这些文档之一中找到列出的类别training-categories.txt之一时,将从存储在标题和描述字段中的术语向量中提取术语。这些术语将被写入目录中的category-bayes-data文件。每个类别都有一个文件。每个都是纯文本文件,可以使用任何文本编辑器或显示实用程序查看。

类别名称出现在第一列中,而文档中出现的每个术语都包含在第二列中。Mahout Bayes 分类器期望输入字段是词干的,因此您会在测试数据中看到这一点。data 命令的 --tv参数 extractTraining 导致使用来自每个文档的词向量的词干词。

ExtractTrainingData该类完成其运行时,它将输出在每个类别中找到的文档计数。

于 2012-08-07T08:28:44.717 回答