本文主要是介绍修改mahout的分类指标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
mahout的默认分类指标
0.9版的分类统计如下图
0.10及0.11的分类统计如下
可以看到,相比较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的分类指标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!