首页 > 其他分享 >Mahout协同推荐简单实例

Mahout协同推荐简单实例

时间:2023-07-26 10:31:40浏览次数:39  
标签:协同 Mahout 实例 recommendations new model RecommendedItem 104

Mahout给我们提供的强大的协同过滤算法。需要新建一个基于Maven的工程,下面是


pom.xml需要导入的包。


<project xmlns= "http://maven.apache.org/POM/4.0.0"  xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
   <modelVersion> 4.0 . 0 </modelVersion>
   <groupId>mahouttest</groupId>
   <artifactId>mahouttest</artifactId>
   <version> 0.0 . 1 -SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>mahouttest</name>
   <url>http: //maven.apache.org</url>
   <properties>
     <project.build.sourceEncoding>UTF- 8 </project.build.sourceEncoding>
   </properties>
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version> 4.8 . 1 </version>
       <scope>test</scope>
     </dependency>
     <dependency>
         <groupId>org.apache.mahout</groupId>
         <artifactId>mahout-core</artifactId>
         <version> 0.8 -SNAPSHOT</version>
         <type>jar</type>
         <scope>compile</scope>
     </dependency>
   </dependencies>

 这里我们导入的是最新的Mahout包,需要在本地的maven库中安装好。


首先我们需要准备好测试的数据,我们就用《Mahout  in action》中的例子:


1,101,5
1,102,3
1,103,2.5
2,101,2
2,102,2.5
2,103,5
2,104,2
3,101,2.5
3,104,4
3,105,4.5
3,107,5
4,101,5
4,103,3
4,104,4.5
4,106,4
5,101,4
5,102,3
5,103,2
5,104,4
5,105,3.5
5,106,4

具体对应的关系图如下:




下面我们用Mahout中三种不同的推荐代码来执行以下刚才给出的数据,看看Mahout中的推荐接口是


如何使用的。


1. 基于用户的协同推荐的代码:



DataModel  model = new  FileDataModel( new  File( "data/intro.csv" ));
UserSimilarity similarity = new  PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new  NearestNUserNeighborhood( 2 ,similarity,model);
Recommender recommender= new  GenericUserBasedRecommender(model,neighborhood,similarity);
List<RecommendedItem> recommendations =recommender.recommend( 1 , 1 );
for (RecommendedItem recommendation :recommendations){
     System.out.println(recommendation);
}

执行后的结果是:RecommendedItem[item:104, value:4.257081]


2. 基于Item的协同过滤的代码:



DataModel  model = new  FileDataModel( new  File( "data/intro.csv" ));
ItemSimilarity similarity = new  PearsonCorrelationSimilarity(model);
Recommender recommender= new  GenericItemBasedRecommender(model,similarity);
List<RecommendedItem> recommendations =recommender.recommend( 1 , 1 );
for (RecommendedItem recommendation :recommendations){
     System.out.println(recommendation);
}

执行后的结果是:RecommendedItem[item:104, value:5.0]


3. SlopeOne推荐算法


DataModel  model = new  FileDataModel( new  File( "data/intro.csv" ));
Recommender recommender= new  SlopeOneRecommender(model);
List<RecommendedItem> recommendations =recommender.recommend( 1 , 1 );
for (RecommendedItem recommendation :recommendations){
     System.out.println(recommendation);
}

执行结果是:RecommendedItem[item:105, value:5.75]


标签:协同,Mahout,实例,recommendations,new,model,RecommendedItem,104
From: https://blog.51cto.com/u_2650279/6854441

相关文章

  • 什么是PHP共享内存,用实例给你们解释一下
    什么是共享内存共享内存是一种在同一台机器的不同进程(应用程序)之间交换数据的方式。一个进程可创建一个可供其他进程访问的内存段,并赋予它相应的权限。每个内存段拥有一个惟一的ID,我们通常称之为shmid,这个ID指向一个物理内存区域,其他进程可通过此ID来操作这块内存,包扩读取、写......
  • PG-DBA培训08:PostgreSQL实例管理与参数文件
    PostgreSQL管理工具,参数文件源码分析,控制文件损坏恢复,系统表索引损坏,插件开发PostgreSQLPSQL管理工具使用PostgreSQL数据库参数文件PostgreSQL如何读取参数文件(源码)PostgreSQL数据库控制文件PostgreSQL控制文件损坏恢复案例PostgreSQL数据库日志文件PostgreSQL系统表与系......
  • 基于协同过滤推荐算法-手语学习系统-项目实战
    我发布此篇文章有两个博客地址博客园:https://www.cnblogs.com/liuyangjava/p/17579030.htmlCSDN:https://blog.csdn.net/caleb_520/article/details/131899297?spm=1001.2014.3001.5502课程视频预览:【【毕设项目】基于协同过滤推荐算法-手语学习系统/2023年新课程】https://www......
  • 实例详解 EJB 中的六大事务传播属性
    前言事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务可以是一条或一组SQL语句,甚至整个程序。它有通常被称为ACID的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)四大特性:原子性(Atomicity):......
  • 协同过滤算法java
    协同过滤算法及其在Java中的应用协同过滤算法是一种常用的推荐系统算法,通过分析用户行为和偏好,找出用户之间的相似性,从而向用户推荐相关的物品或内容。本文将介绍协同过滤算法的原理,并使用Java语言实现一个简单的协同过滤算法示例。协同过滤算法原理协同过滤算法基于一个假设:如......
  • Nacos搭建单机实例
    Nacos是阿里开源的微服务架构组件,既可以用作服务注册中心,也可用作配置中心。虽然Nacos的官方文档也有关于如何部署的说明,但是个人觉得不够详细和连续,故本文将阐述在单机环境实际搭建Nacos环境的详细步骤已经遇到的一些问题。环境准备由于安装的是单机环境,且需要使用MySQL数据库......
  • c语言_练习实例100
     题1:1.有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?#include<stdio.h>intmain(){for(inti=1;i<5;i++){//取百位for(intj=1;j<5;j++){//取十位for(intk=1;k<5;k++){//取个位if(i!=j&&j!......
  • redis中的Cursor使用实例
    Redis中的Cursor使用实例Redis是一种高性能的键值存储系统,常用于缓存、消息队列和排行榜等应用场景。在Redis中,Cursor是一种用于遍历集合元素的机制。通过使用Cursor,我们可以逐步地获取集合中的元素,而不需要一次性将整个集合加载到内存中。什么是Cursor在Redis中,Cursor是一个游......
  • golang 实现 RPC(远程过程调⽤实例)
    golang实现RPC 前提概要,先了解几个概念,websocket简介什么是websocketWebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的Websocket是一个持久化的协议webs......
  • C# 实现抓取财经网站页面内容的实例方法
    ​ protectedvoidEnter_Click(objectsender,EventArgse)        {            WebClientwe=newWebClient();  //主要使用WebClient类            byte[]myDataBuffer;            myDataBuffer=we.DownloadData......