修改mahout的分类指标

2024-08-22 17:32
文章标签 分类 指标 修改 mahout

本文主要是介绍修改mahout的分类指标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


mahout的默认分类指标

0.9版的分类统计如下图

mahout-0.9-classify-result

0.10及0.11的分类统计如下

mahout-0.11-classsify-result.png

可以看到,相比较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-classify-resultl-modify

这篇关于修改mahout的分类指标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096925

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

如何在运行时修改serialVersionUID

优质博文:IT-BLOG-CN 问题 我正在使用第三方库连接到外部系统,一切运行正常,但突然出现序列化错误 java.io.InvalidClassException: com.essbase.api.base.EssException; local class incompatible: stream classdesc serialVersionUID = 90314637791991

android系统源码12 修改默认桌面壁纸--SRO方式

1、aosp12修改默认桌面壁纸 代码路径 :frameworks\base\core\res\res\drawable-nodpi 替换成自己的图片即可,不过需要覆盖所有目录下的图片。 由于是静态修改,则需要make一下,重新编译。 2、方法二Overlay方式 由于上述方法有很大缺点,修改多了之后容易遗忘自己修改哪些文件,为此我们采用另外一种方法,使用Overlay方式。

用Pytho解决分类问题_DBSCAN聚类算法模板

一:DBSCAN聚类算法的介绍 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,DBSCAN算法的核心思想是将具有足够高密度的区域划分为簇,并能够在具有噪声的空间数据库中发现任意形状的簇。 DBSCAN算法的主要特点包括: 1. 基于密度的聚类:DBSCAN算法通过识别被低密

hibernate修改数据库已有的对象【简化操作】

陈科肇 直接上代码: /*** 更新新的数据并并未修改旧的数据* @param oldEntity 数据库存在的实体* @param newEntity 更改后的实体* @throws IllegalAccessException * @throws IllegalArgumentException */public void updateNew(T oldEntity,T newEntity

PMP–一、二、三模–分类–14.敏捷–技巧–看板面板与燃尽图燃起图

文章目录 技巧一模14.敏捷--方法--看板(类似卡片)1、 [单选] 根据项目的特点,项目经理建议选择一种敏捷方法,该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用以下哪种方法? 易错14.敏捷--精益、敏捷、看板(类似卡片)--敏捷、精益和看板方法共同的重点在于交付价值、尊重人、减少浪费、透明化、适应变更以及持续改善等方面。

SW - 引入第三方dwg图纸后,修改坐标原点

文章目录 SW - 引入第三方dwg图纸后,修改坐标原点概述笔记设置图纸新原点END SW - 引入第三方dwg图纸后,修改坐标原点 概述 在solidworks中引入第三方的dwg格式图纸后,坐标原点大概率都不合适。 全图自动缩放后,引入的图纸离默认的原点位置差很多。 需要自己重新设置原点位置,才能自动缩放后,在工作区中间显示引入的图纸。 笔记 将dwg图纸拖到SW中

linux下修改系统日期与时间

cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime