修改mahout的分类指标


mahout的默认分类指标

0.9版的分类统计如下图

修改mahout的分类指标_第1张图片

0.10及0.11的分类统计如下

修改mahout的分类指标_第2张图片

可以看到,相比较0.9版,新版的mahout增加了指标查准率(Weighted precision)和查全率(Weighted recall)。


修改mahout的分类指标

在此基础上,我们可以添加新的指标,比如最小查准率(Min precision ),最大查准率(Max precision),最小查全率(Min recall),最大查全率(Max recall)。以下是在mahout0.9中添加新指标的具体步骤。

因为我们安装mahout后,默认只有各种jar包,没有源码,所以首先下载mahout的源码–mahout-distribution-0.9-src.tar.gz,找到类“ConfusionMatrix”和“ResultAnalyzer”。之后在eclipse中新建工程,创建与上述类路径一致的包“org.apache.mahout.classifier”,并添加上述类和导入需要的包。

之后,对照mahout最新版本–mahout修改,为ConfusionMatrix添加函数getMinPrecision计算最小查准率。

// precisions最后一个总为0,所以只取前n-1个的最小值
  public double getMinPrecision() {
        double precision = 0.0;
        double minPrecision = 100.0;
        double[] precisions = new double[numLabels()];

        int index = 0;
        for (String label : labelMap.keySet()) {
              precisions[index] = getPrecision(label);
              index++;
            }
        int length = index;
        for (index = 0; index < length-1 ; index++) {
            precision = precisions[index];
            if(precision < minPrecision)
            minPrecision = precision;
        }
        return minPrecision;
      }

在ResultAnalyzer中增加相应输出

 returnString.append(StringUtils.rightPad("Min precision", 40)).append(
              StringUtils.leftPad(decimalFormatter.format(confusionMatrix.getMinPrecision()), 10)).append('\n');

至此,源文件已修改完成,在eclipse中选中“Source->Clean up->Finish”进行编译。

在文件系统中找到mahout-examples-0.9-job.jar包,若为快速安装,则该包在安装目录下,若为CDH安装,则在类似于“/opt/cloudera/parcels/CDH-5.3.8-1.cdh5.3.8.p0.5/jars”的目录下。将包中的ConfusionMatrix.class和ResultAnalyzer.class用新编译的class替换掉即可。

我将自己修改后的包放在了CSDN资源上–mahout-examples-0.9-job.jar(修改版。


修改效果

修改jar包后,重新运行,得到结果如下所示

修改mahout的分类指标_第3张图片

你可能感兴趣的:(Mahout)