UITimateBakeOff.py

UITimateBakeOff.py

这个python文件是结合了Content-based,User-Based,Item-Based,SVD,SVD++,Hybrid这几个算法的混合算法系统测试。

下面是这个python文件使用的第三方库,但ContentBasedAlgorithm,Evaluator,HybridAlgorithm这三个库是自己写的python文件。

from MovieLens import MovieLens
from surprise import SVD, SVDpp
from Evaluator import Evaluator
from ContentBasedAlgorithm import ContentBasedAlgorithm
from surprise import KNNBasic
import numpy as np
import random
from time import time
from surprise import NormalPredictor
from HybridAlgorithm import HybridAlgorithm
from surprise.model_selection import GridSearchCV

import random
import numpy as np

##LoadMovieLensData函数
这是加载数据集的函数,返回数据集和电影分数的排名

def LoadMovieLensData():
    ml = MovieLens()    
    print('Loading movie ratings..')
    data = ml.loadMovieLensDataset()
    #计算相似度和新颖性
    rankings = ml.getPopularityRanks()
    return (ml,data,rankings)

其他运行代码

将经典算法运行并添加到混合算系统当中,再测评混合算法系统。

#这两个种子是为了使生成的随机数相同
np.random.seed(0)
random.seed(0)

# 加载程序算法的通用数据集
(ml, evaluationData, rankings) = LoadMovieLensData()

t0=time()
evaluator = Evaluator(evaluationData, rankings)

#基于电影去预测电影
ContentKNN = ContentBasedAlgorithm()
evaluator.AddAlgorithm(ContentKNN, "ContentBased")

#基于用户去预测
sim_options_user = {'name':'cosine','user_based':True}
userKNN = KNNBasic(sim_options = sim_options_user)
evaluator.AddAlgorithm(userKNN,"UserBased")


#基于项目预测
sim_options_item = {'name':'cosine','user_based':False}
itemKNN = KNNBasic(sim_options = sim_options_item)
evaluator.AddAlgorithm(itemKNN,"ItemBased")


# 使用SVD算法预测
SVD = SVD()
evaluator.AddAlgorithm(SVD, "SVD")


# 使用SVD++算法预测
SVDPlusPlus = SVDpp()
evaluator.AddAlgorithm(SVDPlusPlus, "SVD++")


#使用Hybrid算法预测
#随机并且基于内容的预测
Random = NormalPredictor()
Hybrid = HybridAlgorithm([Random, ContentKNN], [0.5, 0.5])
evaluator.AddAlgorithm(Hybrid,'Hybrid')


evaluator.Evaluate(True)

evaluator.SampleTopNRecs(ml)

#终极算法的时间
tt=time()-t0
print("Ultimate Algorithm bake-off in %s seconds" % round(tt,3))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值