影视源码分享网站在线观看?2021独家影视源码

很多朋友对于影视源码分享网站在线观看和2021独家影视源码不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

源码已经放在GitHub上。

源码地址:https://github.com/Lockvictor/MovieLens-RecSys

README.md

MovieLens-RecSys

基于Movielens-1M数据集实现的UserBasedCollaborativeFiltering和ItemBasedCollaborativeFiltering推荐算法

简介

项亮所著的《推荐系统实践》一书是非常优秀的推荐系统入门书籍,但书中只描述了单步的计算如何实现,缺乏一个完整的示例来展示推荐系统从建立数据集到评估模型的整个过程,初学者学起来容易迷茫,因此我基于Movielens1M数据集分别实现了UserBasedCollaborativeFiltering(以下简称UserCF)和ItemBasedCollaborativeFiltering(以下简称ItemCF)两个算法,包含“切分训练集与测试集-训练模型-推荐-评估”一整套流程,可以帮助初学者更快速地理解推荐系统中的协同过滤算法。

程序最终给出的是Precision、Recall、Coverage、Popularity四项衡量模型质量的指标,而具体的电影推荐结果并未保留,如果需要此部分数据可自行修改代码。

核心源码:

splitthedatabypivot\nifrandom.random()<pivot:\nself.trainset.setdefault(user,{})\nself.trainset[user][movie]=int(rating)\ntrainset_len+=1\nelse:\nself.testset.setdefault(user,{})\nself.testset[user][movie]=int(rating)\ntestset_len+=1\nprint(‘splittrainingsetandtestsetsucc’,file=sys.stderr)\nprint(‘trainset=%s’%trainset_len,file=sys.stderr)\nprint(‘testset=%s’%testset_len,file=sys.stderr)\ndefcalc_movie_sim(self):\n”’calculatemoviesimilaritymatrix”’\nprint(‘countingmoviesnumberandpopularity…’,file=sys.stderr)\nforuser,moviesinself.trainset.items():\nformovieinmovies:\nsavethetotalnumberofmovies\nself.movie_count=len(self.movie_popular)\nprint(‘totalmovienumber=%d’%self.movie_count,file=sys.stderr)\ncalculatesimilaritymatrix\nprint(‘calculatingmoviesimilaritymatrix…’,file=sys.stderr)\nsimfactor_count=0\nPRINT_STEP=2000000\nform1,related_moviesinitemsim_mat.items():\nform2,countinrelated_movies.items():\nitemsim_mat[m1][m2]=count/math.sqrt(\nself.movie_popular[m1]*self.movie_popular[m2])\nsimfactor_count+=1\nifsimfactor_count%PRINT_STEP==0:\nprint(‘calculatingmoviesimilarityfactor(%d)’%\nsimfactor_count,file=sys.stderr)\nprint(‘calculatemoviesimilaritymatrix(similarityfactor)succ’,\nfile=sys.stderr)\nprint(‘Totalsimilarityfactornumber=%d’%\nsimfactor_count,file=sys.stderr)\ndefrecommend(self,user):\n”’FindKsimilarmoviesandrecommendNmovies.”’\nK=self.n_sim_movie\nN=self.n_rec_movie\nrank={}\nwatched_movies=self.trainset[user]\nformovie,ratinginwatched_movies.items():\nforrelated_movie,similarity_factorinsorted(self.movie_sim_mat[movie].items(),\nkey=itemgetter(1),reverse=True)[:K]:\nifrelated_movieinwatched_movies:\ncontinue\nrank.setdefault(related_movie,0)\nrank[related_movie]+=similarity_factor*rating\nvarablesforprecisionandrecall\nhit=0\nrec_count=0\ntest_count=0\nvarablesforpopularity\npopular_sum=0\nfori,userinenumerate(self.trainset):\nifi%500==0:\nprint(‘recommendedfor%dusers’%i,file=sys.stderr)\ntest_movies=self.testset.get(user,{})\nrec_movies=self.recommend(user)\nformovie,_inrec_movies:\nifmovieintest_movies:\nhit+=1\nall_rec_movies.add(movie)\npopular_sum+=math.log(1+self.movie_popular[movie])\nrec_count+=N\ntest_count+=len(test_movies)\nprecision=hit/(1.0*rec_count)\nrecall=hit/(1.0*test_count)\ncoverage=len(all_rec_movies)/(1.0*self.movie_count)\npopularity=popular_sum/(1.0*rec_count)\nprint(‘precision=%.4f\\trecall=%.4f\\tcoverage=%.4f\\tpopularity=%.4f’%\n(precision,recall,coverage,popularity),file=sys.stderr)\nif__name__==’__main__’:\nratingfile=os.path.join(‘ml-1m’,’ratings.dat’)\nitemcf=ItemBasedCF()\nitemcf.generate_dataset(ratingfile)\nitemcf.calc_movie_sim()\nitemcf.evaluate()

splitthedatabypivot\nifrandom.random()<pivot:\nself.trainset.setdefault(user,{})\nself.trainset[user][movie]=int(rating)\ntrainset_len+=1\nelse:\nself.testset.setdefault(user,{})\nself.testset[user][movie]=int(rating)\ntestset_len+=1\nprint(‘splittrainingsetandtestsetsucc’,file=sys.stderr)\nprint(‘trainset=%s’%trainset_len,file=sys.stderr)\nprint(‘testset=%s’%testset_len,file=sys.stderr)\ndefcalc_user_sim(self):\n”’calculateusersimilaritymatrix”’\nkey=movieID,value=listofuserIDswhohaveseenthismovie\nprint(‘buildingmovie-usersinversetable…’,file=sys.stderr)\nmovie2users=dict()\nforuser,moviesinself.trainset.items():\nformovieinmovies:\ncountitempopularityatthesametime\nifmovienotinself.movie_popular:\nself.movie_popular[movie]=0\nself.movie_popular[movie]+=1\nprint(‘buildmovie-usersinversetablesucc’,file=sys.stderr)\ncountco-rateditemsbetweenusers\nusersim_mat=self.user_sim_mat\nprint(‘buildinguserco-ratedmoviesmatrix…’,file=sys.stderr)\nformovie,usersinmovie2users.items():\nforuinusers:\nforvinusers:\nifu==v:\ncontinue\nusersim_mat.setdefault(u,{})\nusersim_mat[u].setdefault(v,0)\nusersim_mat[u][v]+=1\nprint(‘builduserco-ratedmoviesmatrixsucc’,file=sys.stderr)\npredicttheuser’s”interest”foreachmovie\nrank.setdefault(movie,0)\nrank[movie]+=similarity_factor\nvarablesforprecisionandrecall\nhit=0\nrec_count=0\ntest_count=0\nvarablesforpopularity\npopular_sum=0\nfori,userinenumerate(self.trainset):\nifi%500==0:\nprint(‘recommendedfor%dusers’%i,file=sys.stderr)\ntest_movies=self.testset.get(user,{})\nrec_movies=self.recommend(user)\nformovie,_inrec_movies:\nifmovieintest_movies:\nhit+=1\nall_rec_movies.add(movie)\npopular_sum+=math.log(1+self.movie_popular[movie])\nrec_count+=N\ntest_count+=len(test_movies)\nprecision=hit/(1.0*rec_count)\nrecall=hit/(1.0*test_count)\ncoverage=len(all_rec_movies)/(1.0*self.movie_count)\npopularity=popular_sum/(1.0*rec_count)\nprint(‘precision=%.4f\\trecall=%.4f\\tcoverage=%.4f\\tpopularity=%.4f’%\n(precision,recall,coverage,popularity),file=sys.stderr)\nif__name__==’__main__’:\nratingfile=os.path.join(‘ml-1m’,’ratings.dat’)\nusercf=UserBasedCF()\nusercf.generate_dataset(ratingfile)\nusercf.calc_user_sim()\nusercf.evaluate()

运行

获取代码

根据自己使用的Python版本获取相应的分支

Python3.x:

gitclonehttps://github.com/Lockvictor/MovieLens-RecSys.git

Python2.x:

gitclone-bpython2https://github.com/Lockvictor/MovieLens-RecSys.git

如果不使用Git,也可在Github页面上手动选择分支然后下载。

下载数据集

下载Movielens1M数据集ml-1m.zip,并解压到项目MovieLens-RecSys文件夹下

运行代码

以UserCF为例,直接在终端运行以下命令即可:

Windows用户无论安装的是2或3,\n命令都是pythonpythonusercf.pypython3usercf.py>run.log2>&1&

该命令会让程序在后台运行,可以等待运行结束再查看日志,或者通过tail-frun.log即时查看日志。

注意事项

UserCF算法中,由于用户数量多,生成的相似性矩阵也大,会占用比较多的内存,不过一般电脑都没问题。

ItemCF算法中,每次推荐都需要找出一个用户的所有电影,再为每一部电影找出最相似的电影,运算量比UserCF大,因此推荐的过程比较慢。

如在手机上遇到代码混乱,无法查看,可以分享到企鹅、或者wechat,然后进行查看,或者在电脑上查看。

我也写了很多其他的非常简单的入门级的爬虫详细教程,关注后,点击我的头像,就可以查看到。

欢迎大家一起留言讨论和交流,谢谢!

关于影视源码分享网站在线观看,2021独家影视源码的介绍到此结束,希望对大家有所帮助。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平