文档章节

mahout demo

xiaomin0322
 xiaomin0322
发布于 06/20 17:12
字数 360
阅读 5
收藏 0
点赞 0
评论 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
粉丝 82
博文 3458
码字总数 140043
作品 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
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
探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤(二)

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

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

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

东方神剑
2014/11/13
0
0
Mahout In Aciotn

Mahout In Aciotn 作者:Jack Zhang 来自开拓者部落 ,qq群:248087140,欢迎加入我们! 本文欢迎转载,转载请注明出处 http://my.oschina.net/u/1866370/blog/287907 i.Java和IDE(略) ii...

开拓者-2017
2014/07/09
0
0
Apache Mahout:适合所有人的可扩展机器学习框架

在软件的世界中,两年就像是无比漫长的时光。在过去两年中,我们看到了社交媒体的风生水起、大规模集群计算的商业化(归功于 Amazon 和 RackSpace 这样的参与者),也看到了数据的迅猛增长以...

龙鸟
2012/07/11
0
0
org.apache.mahout.math.function.IntDoubleProcedure

学习<mahout in action > SimpleKMeansClustering测试例子的时候,运行报错 环境列表 软件明称 版本 hadoop 0.20.2 mahout 0.4 eclipse Kepler Service Release 1 报错代码: ClassNotFoundEx......

cookqq
2014/01/21
0
0
实战Mahout聚类算法Canopy+K-means

Mahout是Apache的顶级开源项目,它由Lucene衍生而来,且基于Hadoop的,对处理大规模数据的机器学习的经典算法提供了高效的实现。其中,对经典的聚类算法即提供了单机实现,同时也提供了基于h...

Breath_L
2012/05/20
0
1
mahout0.9 + hadoop2.2 中文文本分类实战(上)

一、准备环境。 到我写这个的时候,mahout还是0.9版本,官网上发行的0.9版本不能跑在hadoop2.x上。不过最新的代码已经支持hadoop2.x了。所以自己编译一下也是ok的,因为实在不想换hadoop。这...

一只小桃子
2014/05/08
0
14

没有更多内容

加载失败,请刷新页面

加载更多

下一页

使用爬虫实现代理IP池之放弃篇

啥叫代理IP以及代理IP池 概念上的东西网上搜索一下就好了,这里简单科普一下(大部分会读这篇文章的人,基本是不需要我来科普的),白话说就是能联网并提供代理访问互联网的服务器,它提供的...

一别丶经年
18分钟前
0
0
rabbitmq学习记录(五)交换机Exchange-fanout

之前学习的都是一条消息发给一个消费者,下面开始记录如何把一条信息发给多个消费者 这边我们用到了交换机Exchange 交换机模式:fanout 模式特点:生产者把消息发送给Exchange之后,Exchang...

人觉非常君
40分钟前
0
0
sqoop导入数据到Base并同步hive与impala

使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 Sqool和Hive、HBase简介 Sqoop Hive HBase 测试Sqoop 使用Sqoop从MySQL导入数据到Hive 使用复杂SQL 调整Hive数据类型 不断更新 ...

hblt-j
45分钟前
0
0
Dart 服务端开发 文件上传

clent端使用angular组件 upload_component.html form id="myForm" method="POST" enctype="multipart/form-data"> <input type="file" name="fileData"> <!-- file field --></form>......

scooplol
46分钟前
0
0
apache和tomcat同时开启,乱码问题

tomcat和apache同时开启,会走apache的转发,执行的是AJP/1.3协议。所以在tomcat的配置文件server中, <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" useBodyEncodingForU......

Kefy
今天
0
0
使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录 和ssh常用命令

ssh-keygen 产生公钥与私钥对. ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利 第一步...

xtof
今天
0
0
orcale 查询表结构

SELECT t.table_name, t.colUMN_NAME, t.DATA_TYPE || '(' || t.DATA_LENGTH || ')', t1.COMMENTS FROM User_Tab_Cols t, User_Col_Comments t1WHERE t.table_name......

wertwang
今天
0
0
Java 之 反射

反射,剖析 Java类 中的 各个组成部分,映射成 一个个 Java对象,多用于 框架和组件,写出复用性高的通用程序。 测试类代码如下: class Person { private String name; public St...

绝世武神
今天
0
0
华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大!华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大! 在华为最新发布的nova 3手机上,抖音通过华为himedia SDK集成了60fps、超级...

华为终端开放实验室
今天
0
0
多 SSH Key 实现同一台服务器部署多 Git 仓库

本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 SSH Key 进行 gi...

yeahlife
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部