EvaluatedAlgorithm.py

EvaluatedAlgorithm.py

EvaluatedAlgorithm.py

这个python文件是一个评估算法的文件。
用到的第三方库如下:
AlgoBase是surprise中的库,具体功能可以点击去官方文档了解。

from RecommendationMetrics import RecommendationMetrics
from surprise import AlgoBase

init函数

初始化函数,传入的参数为algorithm和name

def __init__(self,algorithm,name):
    self.algorithm=algorithm
    self.name=name

GetName函数

获取name的函数

def GetName(self):
    return self.name

GetAlgorithm函数

获取algorithm的函数

def GetAlgorithm(self):
    return self.algorithm

Evaluate函数

评估函数,将数据的准确率计算(MAE和RMSE),用留一法计算前十电影预测的命中率和ARHR,最后则是计算出多样性和新颖性。

def Evaluate(self,evaluationData, doTopN, n=10, verbose = True):
    metrics={}
    #计算MAERMSE
    if (verbose):
        print('评估准确率...')
        self.algorithm.fit(evaluationData.GetTrainSet())
        predictions = self.algorithm.test(evaluationData.GetTestSet())
        #这里的准确率就调用RecommendationMetrics中写好的函数计算
        metrics["MAE"] = RecommendationMetrics.MAE(predictions)
        metrics["RMSE"] = RecommendationMetrics.RMSE(predictions)
        
    if (doTopN):
        #如果doTopN存在,则用留一法再建立test去测试
        if (verbose):
            print("用留一法评估TopN...")
        self.algorithm.fit(evaluationData.GetLOOCVTrainSet())
        leftOutPredictions = self.algorithm.test(evaluationData.GetLOOCVTestSet())
        #给不在训练集中的用户测试
        allPredictions = self.algorithm.test(evaluationData.GetLOOCVAntiTestSet())
        #计算每个用户前十的记录
        topNPredicted = RecommendationMetrics.GetTopN(allPredictions,n)
        if (verbose):
            print("计算命中率的排名和指标的排名...")
        #检查我们建议用户实际评分的频率
        metrics["HR"] = RecommendationMetrics.HitRate(topNPredicted,leftOutPredictions)
        metrics["ARHR"] = RecommendationMetrics.AvergeReciprocalHitRank(topNPredicted,leftOutPredictions)
        if (verbose):
            print("分析多样性和新颖性")
        #计算多样性和新颖性
        metrics["Diversity"] = RecommendationMetrics.Diversity(topNPredicted,evaluationData.GetSimilarities())
        metrics["Novelty"] = RecommendationMetrics.Novelty(topNPredicted,evaluationData.GetPopularityRankings())
    if (verbose):
        print('分析完成!')
    
    return metrics

总结

这个python文件没啥复杂的地方,就是调用RecommendationMetrics.py这个文件里的函数,进行评估分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值