我正在尝试使用Native Bayes Classifier来检测欺诈交易。我在excel表中有大约5000的样本数据,这是我将用于训练分类器的数据,我有大约1000的测试数据,我将在其上应用测试分类器。
我的问题是,我不知道如何训练分类器。在将训练数据传递到训练分类器之前,是否需要将训练数据转换为某种特定格式。训练分类器如何知道哪个是我的目标值,哪个是它的特征。
有人可以帮帮我吗?
答案 0 :(得分: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分类器期望输入字段被阻止,因此您将在测试数据中看到这一点。 --tv
数据命令的extractTraining
参数会导致每个文档术语的词干术语
要使用的矢量。
当ExtractTrainingData
类完成其运行时,它将输出在每个类别中找到的文档计数。