- 浏览: 97476 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
jyjsjd:
请教博主这个ChineseTokenizer()你是怎么写的, ...
使用WVTool进行文本分类 -
superclay:
能不能发个indexwriter indexsearch ...
结合ehcache缓存对lucene使用单例模式搜索 -
strayly:
我采用和ehcache缓存结合使用单例模式
使用ehcache ...
lucene搜索优化(转)
#!/usr/bin/env python # coding=utf-8 ''' 运行命令/yourpath/spark/bin/spark-submit --driver-memory 1g MovieLensALS.py movieLensDataDir personalRatingsFile movieLensDataDir 电影评分数据集目录 比如 ml-1m/ personalRatingsFile 需要推荐的某用户的评价数据 格式参考ratings.dat ''' import sys import itertools from math import sqrt from operator import add from os.path import join, isfile, dirname from pyspark import SparkConf, SparkContext from pyspark.mllib.recommendation import ALS def parseRating(line): """ Parses a rating record in MovieLens format userId::movieId::rating::timestamp . """ fields = line.strip().split("::") return long(fields[3]) % 10, (int(fields[0]), int(fields[1]), float(fields[2])) def parseMovie(line): """ Parses a movie record in MovieLens format movieId::movieTitle . """ fields = line.strip().split("::") return int(fields[0]), fields[1] def loadRatings(ratingsFile): """ Load ratings from file. """ if not isfile(ratingsFile): print "File %s does not exist." % ratingsFile sys.exit(1) f = open(ratingsFile, 'r') ratings = filter(lambda r: r[2] > 0, [parseRating(line)[1] for line in f]) f.close() if not ratings: print "No ratings provided." sys.exit(1) else: return ratings def computeRmse(model, data, n): """ Compute RMSE (Root Mean Squared Error). """ predictions = model.predictAll(data.map(lambda x: (x[0], x[1]))) predictionsAndRatings = predictions.map(lambda x: ((x[0], x[1]), x[2])).join(data.map(lambda x: ((x[0], x[1]), x[2]))).values() return sqrt(predictionsAndRatings.map(lambda x: (x[0] - x[1]) ** 2).reduce(add) / float(n)) if __name__ == "__main__": if (len(sys.argv) != 3): print "Usage: /path/to/spark/bin/spark-submit --driver-memory 1g MovieLensALS.py movieLensDataDir personalRatingsFile" sys.exit(1) # set up environment conf = SparkConf().setAppName("MovieLensALS").set("spark.executor.memory", "1g") sc = SparkContext(conf=conf) # load personal ratings myRatings = loadRatings(sys.argv[2]) myRatingsRDD = sc.parallelize(myRatings, 1) movieLensHomeDir = sys.argv[1] # ratings is an RDD of (last digit of timestamp, (userId, movieId, rating)) ratings = sc.textFile(join(movieLensHomeDir, "ratings.dat")).map(parseRating) # movies is an RDD of (movieId, movieTitle) movies = dict(sc.textFile(join(movieLensHomeDir, "movies.dat")).map(parseMovie).collect()) numRatings = ratings.count() numUsers = ratings.values().map(lambda r: r[0]).distinct().count() numMovies = ratings.values().map(lambda r: r[1]).distinct().count() myRatedMovieIds = set([x[1] for x in myRatings]) print "Got %d ratings from %d users on %d movies." % (numRatings, numUsers, numMovies) # split ratings into train , validation # last digit of the timestamp, add myRatings to train, and cache them # training, validation, test are all RDDs of (userId, movieId, rating) numPartitions = 4 #training = ratings.filter(lambda x: x[0] < 8).values().union(myRatingsRDD).repartition(numPartitions).cache() validation = ratings.filter(lambda x: x[0] >= 8 and x[0] < 10).values().repartition(numPartitions).cache() numTraining = training.count() numValidation = validation.count() print "Training: %d, validation: %d" % (numTraining, numValidation) # train models and evaluate them on the validation set ranks = [10,12] lambdas = [0.01,0.4,1.0] numIters = [10] bestModel = None bestValidationRmse = float("inf") bestRank = 0 bestLambda = -1.0 bestNumIter = -1 for rank, lmbda, numIter in itertools.product(ranks, lambdas, numIters): model = ALS.train(training, rank, numIter, lmbda) validationRmse = computeRmse(model, validation, numValidation) print "RMSE (validation) = %f for the model trained with " % validationRmse + "rank = %d, lambda = %.4f, and numIter = %d." % (rank, lmbda, numIter) if (validationRmse < bestValidationRmse): bestModel = model bestValidationRmse = validationRmse bestRank = rank bestLambda = lmbda bestNumIter = numIter # evaluate the best model on the test set print "The best model was trained with rank = %d and lambda = %.4f, and numIter = %d ,and Rmse %.4f" % (bestRank, bestLambda,bestNumIter,bestValidationRmse) #exit() #通过计算得到rank = 10 lambda = 0.45 numIter = 20 结果最好 bestModel = ALS.train(training, 10, 20, 0.45); # training, validation, test are all RDDs of (userId, movieId, rating) #make personalized recommendations #排除该用户已评价过的电影 testdata = training.filter(lambda x: x[0] not in myRatedMovieIds).map(lambda p: (int(p[0]), int(p[1]))) predictions = bestModel.predictAll(testdata).map(lambda r: ((r[0], r[1]), r[2])) #对预测结果按分值排序 取前5 recommendations = predictions.sortBy(lambda x:x[1],False).take(5) print "Movies recommended for you:" for i in xrange(len(recommendations)): print ("%2d: %s %s" % (i + 1, recommendations[i][0],recommendations[i][1])) # clean up sc.stop()
数据集采用MovieLens
代码参考https://github.com/databricks/spark-training/blob/master/machine-learning/python/solution/MovieLensALS.py
发表评论
-
sklearn聚类之kmeans以及增量聚类
2019-07-11 14:47 1206使用kmeans聚类时,计算量往往都比较大,当有新的数据要添加 ... -
spark进行svd降维和kmeans聚类
2019-07-05 16:36 843import jieba import jieba.analy ... -
spark 的 itemcf推荐
2019-05-29 16:21 0#-*-coding:utf-8-*- ''' Cr ... -
卡方检验提取特征来对文本分类
2019-05-05 17:30 927count_vect = CountVectorizer( ... -
计算文本词频进行聚类
2019-05-05 17:04 472import jieba import jieba.an ... -
sklearn文本聚类
2019-05-05 17:04 1import jieba import jieba.an ... -
spark之word2vec使用(python)
2018-08-15 09:57 2059from pyspark import SparkConf, ... -
spark2.3聚类算法lda代码(python)
2018-08-15 09:49 1586spark的lda有两个一个是mllib下 一个是ml下的,下 ... -
linux 编译安装 Python3.6 (保留自带Python2)
2017-07-21 15:55 623yum install wget yum install zl ... -
TensorFlow 的SSE avx fma安装
2017-05-06 19:22 982W tensorflow/core/platform/cpu_ ... -
(转载)Seq2SeqModel参数
2017-05-05 16:15 1686训练数据和预处理 数 ... -
(转载)基于CRF的中文分词
2017-04-28 17:27 1047CRF简介 Conditional Random Fi ... -
(转载)jieba全应用入门
2017-03-22 09:14 533# coding: utf-8 # ###jieba特 ... -
(转载)汉语词性对照表[北大标准/中科院标准]
2017-03-22 09:15 471词性编码 词性名称 注 解 Ag ... -
(转)python的nltk中文使用和学习资料汇总帮你入门提高
2017-03-06 10:19 630转自:http://blog.csdn.net/huy ... -
windows下python中运用libsvm的配置(转载)
2016-12-13 14:03 669转载 http://blog.sina.com.cn/ ... -
pyspark在windows下java.net.SocketException: Connection reset by peer 错误
2016-12-05 16:12 2184pyspark在windows加载数据集 训练模型出现 以下错 ... -
在eclipse上搭建spark的java开发环境
2016-12-05 09:52 906首先安装好spark后 设置环境变量SPARK_HOME=d: ... -
Spark ALS推荐系统简单例子(python)
2016-11-30 10:55 5220采用MovieLens 100k数据集 http://file ... -
spark web ui 开启history server
2016-11-29 17:22 886在/tmp下建立目录 spark-events ./sbin ...
相关推荐
在本实例中,我们将探讨如何使用 PySpark(Python 接口)实现基于 MLlib 的协同过滤推荐算法——交替最小二乘法(Alternating Least Squares, ALS),用于用户和物品的推荐。 协同过滤是推荐系统中最常用的方法之一...
《Python与Spark构建电影推荐系统:爬虫、Web前端与后台管理详解》 在现代互联网环境中,推荐系统已经成为个性化服务的重要组成部分,特别是在娱乐媒体领域,如电影推荐。本项目“Python-基于Spark的电影推荐系统”...
我们将深入探讨如何使用Python编程语言和Apache Spark的机器学习库MMLib中的协同过滤(Collaborative Filtering, CF)以及latent factor models(LFM)算法,特别是Alternating Least Squares(ALS)来实现电影推荐...
1、资源内容:基于Spark的电影推荐系统+源代码+文档说明+数据流图+思维导图+系统架构图 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过测试运行成功...
(Hadoop和spark项目)基于Java+python开发的电影推荐系统源码+说明+数据.zip 1.ALS(推荐算法) item_base基于物品的推荐算法 RecommendRDD/DF基于ALS推荐模型的推荐算法 运行环境(hadoop+spark) 2.movie 电影推荐...
《基于Flask+Spark+ALS+MovieLens数据集的电影智能推荐系统》 在当今信息爆炸的时代,个性化推荐系统已经成为互联网服务中不可或缺的一部分,尤其是在娱乐领域,如电影推荐。本项目是一个结合了Flask微服务框架、...
"Spark"表明项目使用的是Apache Spark,一个用Java编写并广泛支持多语言(如Python、Scala等)的大数据处理框架。"java"则意味着项目的实现主要使用Java编程语言,这是Spark的一个常见选择,因为Java在企业环境中...
在本篇文章中,详细介绍了如何基于Spark大数据处理技术设计并实现一个电影推荐系统。该系统利用了优化后的MovieLens数据集和一个电影评分网站的数据业务框架,运用了协同过滤算法和基于内容的推荐算法,实现了混合...
5. **模型训练与评估**:推荐系统的模型通常会使用如交替最小二乘法(Alternating Least Squares, ALS)或矩阵分解等方法来学习用户和物品的隐向量表示,进而预测用户对未评分电影的喜好。模型训练完成后,使用诸如...
基于内容的推荐通过分析用户过去的偏好和电影的特征(如类型、导演、演员等)来预测用户可能喜欢的电影。而协同过滤则分为用户-用户协同过滤和物品-物品协同过滤,前者基于用户之间的相似性进行推荐,后者则通过分析...
3. 模型训练:使用Spark的MLlib库,选择合适的推荐算法(如基于用户的协同过滤或基于矩阵分解的算法如ALS)进行训练。 4. 预测与推荐:根据训练好的模型,为每个用户生成电影推荐列表。 5. 系统集成:将推荐结果集成...
基于协同过滤和spark-als的电影推荐系统源码+文档+资料齐全.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的...
6. 基于spark的ALS算法 (要额外添加) 7. Mysql适配 8. movielens数据集适配 fixed 1. 首页导航栏链接错误 2. 首页面为空 3. 登录注册页面 4. 推荐跳转登录 5. 周推荐用户没有评分时随机推荐 6. 按照收藏数量排序 7....
在这个项目中,Python可能被用来创建和训练推荐模型,比如使用协同过滤算法(如ALS)来预测用户对未评分电影的喜好程度。 项目的毕业设计背景意味着这可能是一个学生项目,涵盖了从数据处理到模型构建的完整流程,...