文档章节

mahout demo

xiaomin0322
 xiaomin0322
发布于 06/20 17:12
字数 360
阅读 11
收藏 0

package com.datamine.CollaborativeFiltering.mysql;
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.EuclideanDistanceSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;

import java.util.ArrayList;
import java.util.List;

public class ItemRecommender extends RecommenderBase {

    public static ArrayList<Integer> recommend(long uid, int count) throws Exception {
        DataModel dataModel = getDataModel();

        UserSimilarity userSimilarity = new EuclideanDistanceSimilarity(dataModel);
        UserNeighborhood userNeighborhood = new NearestNUserNeighborhood(3, userSimilarity, dataModel);
        UserBasedRecommender userBasedRecommender = new GenericUserBasedRecommender(dataModel, userNeighborhood, userSimilarity);

        List<RecommendedItem> recommendations = userBasedRecommender.recommend(uid, count);
        ArrayList<Integer> list = new ArrayList<>();
        for (RecommendedItem recommendation : recommendations) {
            list.add((int) recommendation.getItemID());
        }

        return list;
    }

    
    public static void main(String[] args) {
        
    }
}

package com.datamine.CollaborativeFiltering.mysql;
import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.model.jdbc.MySQLJDBCDataModel;
import org.apache.mahout.cf.taste.impl.model.jdbc.ReloadFromJDBCDataModel;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.JDBCDataModel;

public class RecommenderBase {

    public static DataModel getDataModel() throws TasteException {
        MysqlConnectionPoolDataSource dataSource = new MysqlConnectionPoolDataSource();
        dataSource.setURL("jdbc:mysql://localhost/drupal7?user=USER&password=PASSWORD");

        JDBCDataModel dm = new MySQLJDBCDataModel(dataSource, "rec_vote", "uid", "nid", "vote", null);
        DataModel reloadFromJDBCDataModel = new ReloadFromJDBCDataModel(dm);

        return reloadFromJDBCDataModel;
    }

}

package com.datamine.CollaborativeFiltering.mysql;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;
import java.util.ArrayList;
import java.util.List;

public class SimilarityRecommender extends RecommenderBase {

    public static ArrayList<Integer> recommend(long nid, int count) throws TasteException {
        DataModel dataModel = getDataModel();

        ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);
        GenericItemBasedRecommender genericItemBasedRecommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);

        List<RecommendedItem> recommendations = genericItemBasedRecommender.mostSimilarItems(nid, count);
        ArrayList<Integer>list = new ArrayList<>();
        for (RecommendedItem recommendation : recommendations) {
            list.add((int) recommendation.getItemID());
        }

        return list;
    }

}

package com.datamine.CollaborativeFiltering;

import java.io.File;
import java.util.List;

import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;

/**
 * 基于物品的协同过滤
 * @author Administrator
 *
 */
public class ItemCF2 {

    final static int RECOMMENDER_NUM = 3; //推荐物品数目
    
    public static void main(String[] args) throws Exception {
        
        File file = new File("data/CF.data");
        
        //构造数据模型
        DataModel model = new FileDataModel(file); 
        
        //使用皮尔松算法 计算内容之间的相似度
        ItemSimilarity itemSimilarity = new PearsonCorrelationSimilarity(model); 
        
        //构造推荐引擎 基于物品的推荐
        GenericItemBasedRecommender r = new GenericItemBasedRecommender(model, itemSimilarity);
        
        //迭代获取用户的id
            //获得推荐结果,给userID推荐howMany个Item
            List<RecommendedItem> list = r.mostSimilarItems(1580, RECOMMENDER_NUM);
            for(RecommendedItem items : list){
                System.out.printf("(%s,%f)",items.getItemID(),items.getValue());
            }
            System.out.println();
        
    }
    
}
 

© 著作权归作者所有

共有 人打赏支持
xiaomin0322
粉丝 114
博文 3556
码字总数 165688
作品 0
上海
架构师
私信 提问
Mahout之Taste Webapp实战

Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚...

一枚Sir
2014/06/23
0
0
hadoop 推荐引擎资料记录

在hadoop上做推荐系统,主要的开源软件是mahout,不仅实现了基于协同的算法,还实现了很多机器学习算法。很有学习价值。 官网地址:http://mahout.apache.org 简介:http://www.ibm.com/deve...

七水禾
2014/03/24
0
0
探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤(二)

基于 Apache Mahout 实现高效的协同过滤推荐 Apache Mahout 是 Apache Software Foundation (ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方...

东方神剑
2014/11/13
0
0
探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类(四)

狄利克雷聚类算法 前面介绍的三种聚类算法都是基于划分的,下面我们简要介绍一个基于概率分布模型的聚类算法,狄利克雷聚类(Dirichlet Processes Clustering)。 首先我们先简要介绍一下基于...

东方神剑
2014/11/13
0
0
CentOS Mahout部署

CentOS下Mahout的部署需要经过如下的三个步骤 1. 安装Maven 2. 设置网络代理(理由你懂的) 3. 部署Mahout 1 安装Maven cd /opt/ sudo wget http://apache.etoak.com//maven/binaries/apache...

linchengchuang
2014/05/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
0
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
0
0
Mybatis 学习笔记四 MyBatis-Plus插件

Mybatis 学习笔记四 MyBatis-Plus插件 maven依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <ve......

晨猫
昨天
2
0
小白带你认识netty(二)之netty服务端启动(下)

承接上一篇小白带你认识netty(二)之netty服务端启动(上),还剩下两步骤:3、注册Selector:将Channel注册到Selector上 和 4、端口的绑定:服务端端口的监听。 3、注册Selector:将Chann...

天空小小
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部