# -*- coding:UTF-8 -*-
import sys
def PrepareMData(sc,path):
print("========读取电影信息,from "+path+"/data/u.item")
itemRDD=sc.textFile(path+"/data/u.item")
#itemRDD.cache()
movieTitle = itemRDD.map(lambda line: line.split("|")) \
.map(lambda a: (float(a[0]), a[1])) \
.collectAsMap()
return movieTitle
def loadModel(sc,path):
#from pyspark.mllib.recommendation import ALS
from pyspark.mllib.recommendation import MatrixFactorizationModel
model=None
try:
model=MatrixFactorizationModel.load(sc,path+"/ALSmodel")
model.userFeatures().cache()
model.productFeatures().cache()
print("=== 载入ALSmode,from "+path)
except Exception as e:
print "无法载入ALSmodel"+e.message
return model
def Recommend(model,movieTitle):
if sys.argv[1]=="--U":
RecommendMovies(model,movieTitle,int(sys.argv[2]))
elif sys.argv[1]=="--M":
RecommendUsers(model,movieTitle,int(sys.argv[2]))
def RecommendMovies(model,movieTitle,inputUserID):
recMovie=model.recommendProducts(inputUserID,10)
print ("针对用户"+str(inputUserID)+" 推荐电影:")
for rmd in recMovie:
print("针对用户ID:{0},推荐电影ID:{1},电影名:{2},推荐评分:{3}").\
format (rmd[0],rmd[1],movieTitle[rmd[1]],rmd[2])
def RecommendUsers(model,movieTitle,inputMovieID):
recUser=model.recommendUsers(inputMovieID,10)
print ("针对电影id:{0} 电影名:{1},推荐下列用户ID:").\
format(inputMovieID,movieTitle[inputMovieID])
for rmd in recUser:
print("用户ID:{0},推荐评分:{1}").\
format (rmd[0],rmd[2])
if __name__ == "__main__":
from ALS.Com import *
if len(sys.argv) != 3:
print("请输入2个参数")
exit(-1)
sc = CreateSparkContext()
print ("======== 推荐程序,数据准备 ========")
path = SetPath(sc)
movieTitle = PrepareMData(sc,path)
print ("======== 推荐程序,载入模型 ========")
model=loadModel(sc,path)
#model.userFeatures().cache()
#model.productFeatures().cache()
if(model!=None):
print ("====== 进行推荐 ==========")
Recommend(model,movieTitle)
bluesunday
- 粉丝: 0
- 资源: 5
会员权益专享
最新资源
- 第4次作业_计算税后工资.cpp
- 校园管理 - 学生管理系统源码
- 1047538782469312MOJiRead_channel_google_code_1.5.5_60_20230314182834_NO-HW_release.apk
- stm32的nucleo开发板点亮LED的汇编程序
- WPSOffice-v17.3.2(1394)-v8a,v7a-Balatan.apk
- python练习题代码参考-职工管理系统
- python读取某文件夹下的所有文件名将读出的文件名输出到CSV文件
- Sparse_Identification_Part2.mlx
- python斐波那契数列
- python非递归方式计算阶乘(循环)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


