mahout利用布尔型数据评估查准率和查全率

/*利用无偏好值得布尔型
 * 数据评估查准率和查全率
 * */
package byuser;

import java.io.File;
import java.io.IOException;

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.eval.DataModelBuilder;
import org.apache.mahout.cf.taste.eval.IRStatistics;
import org.apache.mahout.cf.taste.eval.RecommenderBuilder;
import org.apache.mahout.cf.taste.eval.RecommenderIRStatsEvaluator;
import org.apache.mahout.cf.taste.impl.common.FastByIDMap;
import org.apache.mahout.cf.taste.impl.eval.GenericRecommenderIRStatsEvaluator;
import org.apache.mahout.cf.taste.impl.model.GenericBooleanPrefDataModel;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.PreferenceArray;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;

public class GenericBooleanPreTest {

	public GenericBooleanPreTest() throws TasteException, IOException{
		DataModel model = new GenericBooleanPrefDataModel(new FileDataModel(new File("E:\\mahout项目\\examples\\ua.base")));
		RecommenderIRStatsEvaluator evaluator = new GenericRecommenderIRStatsEvaluator();
		RecommenderBuilder recommenderBuilder= new RecommenderBuilder() {

			@Override
			public Recommender buildRecommender(DataModel model) throws TasteException {
				// TODO Auto-generated method stub
				UserSimilarity similarity = new LogLikelihoodSimilarity(model);
				UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, similarity, model);
				return new GenericUserBasedRecommender(model, neighborhood, similarity);
			}
		};

		DataModelBuilder modelBuilder = new DataModelBuilder() {

			@Override
			public DataModel buildDataModel(FastByIDMap<PreferenceArray> trainingData) {
				// TODO Auto-generated method stub
				return new GenericBooleanPrefDataModel(GenericBooleanPrefDataModel.toDataMap(trainingData));
			}
		};

		IRStatistics stats = evaluator.evaluate(recommenderBuilder, modelBuilder, model, null, 10, GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);
		System.out.println("布尔型数据评估的查准率是:" + stats.getPrecision());
		System.out.println("布尔型数据评估的查全率是:" + stats.getRecall());

	}
	public static void main(String[] args) throws TasteException, IOException {
		// TODO Auto-generated method stub
		GenericBooleanPreTest test = new GenericBooleanPreTest();

	}

}

结果如图:

时间: 2024-08-28 13:33:53

mahout利用布尔型数据评估查准率和查全率的相关文章

mahout实现查准率和查全率评估的配置与运行

/* * 查准率和查全率评估的配置与运行 * * */ package byuser; import java.io.File; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.eval.IRStatistics; import org.apache.mahout.cf.taste.eval.RecommenderBuilder; import org.apach

mahout推荐3-评估查准率和查全率

通过估计偏好值来生成推荐结果并非绝对必要.给出一个从优到劣的推荐列表对于许多场景都够用了,而不必包含估计的偏好值. 查准率:在top结果中相关结果的比例 查全率:所有相关结果,包含在top结果中的比例 对上个例子进行测试: package mahout; import java.io.File; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.eval.IRSta

Java千问:你知道Java语言布尔型数据到底占多大空间吗?

我们都知道,Java语言中有个boolean类型.每个boolean类型的变量中存储的是一个true或者是false的逻辑值.那么存储这个逻辑值,需要多大的空间呢?从理论上来讲,存储这个逻辑值只需要1个位(bit)就可以了,很多教科书上谈到这个问题的时候,也说boolean类型的数据在内存中只占1个位. 但是稍微有点计算机常识的人都知道:计算机完成寻址操作的时候,是以字节为最小单位进行的.也就是说每次要读取内存中数据的时候,最小只能精确到1个字节,不能单独读取某个位上的信息.如果boolean类

Mahout in action 中文版-2.推荐器的介绍-2.4~2.6

2.4 评估查准率(precision)和召回率(recall) 我们可以从更广义的角度去看待推荐问题:它并不是严格的要去估计偏好指数来提供推荐结果,也不总是要向用户提供准确的偏好指数的值.很多时候,我们只需从好到坏列出推荐排序,事实上,有些时候我们只需列出很少一部分排名考前的就可以了. ???????? 这样来看,我们也可以利用经典的信息检索中的度量方法去评估分类器:查准率和召回率.这些术语被典型的用在搜索引擎之中.而且,搜索引擎正是为一个查询返回一些排名较好的结果. ???????? 一个搜

《利用python进行数据分析》读书笔记 --第一、二章 准备与例子

http://www.cnblogs.com/batteryhp/p/4868348.html 第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得会用才行,这是码这本书的原因.首先按照书上说的进行安装,google下载了epd_free-7.3-1-win-x86.msi,译者建议按照作者的版本安装,EPDFree包括了Numpy,Scipy,matplotlib,Chaco,IPython.这里的pandas需要自己安装,对应版本为pandas-0.

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行

Mahout构建图书推荐系统

阅读导读: 1.Mahout中推荐过滤算法支持哪两种算法? 2.用java代码如何计算男性用户打分过的图书? 3.itemEuclidean,userEuclideanNoPref分别是什么算法? 1. 项目背景 Amazon是最早的电子商务网站之一,以网上图书起家,最后发展成为音像,电子消费品,游戏,生活用品等的综合性电子商务平台.Amazon的推荐系统,是互联网上最早的商品推荐系统,它为Amazon带来了至少30%的流量,和可观的销售利润. 如今推荐系统已经成为电子商务网站的标配,如果还没有

Mahout推荐算法API详解

前言 用Mahout来构建推荐系统,是一件既简单又困难的事情.简单是因为Mahout完整地封装了“协同过滤”算法,并实现了并行化,提供非常简单的API接口:困难是因为我们不了解算法细节,很难去根据业务的场景进行算法配置和调优. 本文将深入算法API去解释Mahout推荐算法底层的一些事. 1. Mahout推荐算法介绍 Mahoutt推荐算法,从数据处理能力上,可以划分为2类: 单机内存算法实现 基于Hadoop的分步式算法实现 1). 单机内存算法实现 单机内存算法实现:就是在单机下运行的算法

Mahout推荐算法API详解【一起学Mahout】

阅读导读: 1.mahout单机内存算法实现和分布式算法实现分别存在哪些问题? 2.算法评判标准有哪些? 3.什么会影响算法的评分? 1. Mahout推荐算法介绍 Mahout推荐算法,从数据处理能力上,可以划分为2类: 单机内存算法实现 基于Hadoop的分步式算法实现 1). 单机内存算法实现 单机内存算法实现:就是在单机下运行的算法,是由cf.taste项目实现的,像我们熟悉的UserCF,ItemCF都支持单机内存运行,并且参数可以灵活配置.单机算法的基本实例,请参考文章:用Maven