我正在尝试使用本机贝叶斯分类器来检测欺诈交易。我在 excel 工作表中有一个大约 5000 的示例数据,这是我将用于训练分类器的数据,我有大约 1000 的测试数据,我将在其上应用测试分类器。
我的问题是,我不知道如何训练分类器。在将训练数据传递到训练分类器之前,我是否需要将训练数据转换为某种特定格式。训练分类器如何知道哪个是我的目标值,哪些是它的特征。
有人可以帮我吗?
为了测试数据,您需要确保训练集具有一些标签,或者已根据数据收集集中使用的某些功能划分为多个区块。我不确定您是如何组织数据的,但您需要将数据集拆分为具有相似特征的块。
根据条件创建分割后,请检查输入数据的创建。您可以使用以下方法验证文件:
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 分类器期望对输入字段进行词干提取,因此您将看到这反映在测试数据中。extractTraining
数据命令的--tv
参数会导致每个文档术语的词干化术语要使用的矢量。
当ExtractTrainingData
类完成运行后,它将输出在每个类别中找到的文档计数。