HybridAlgorithm.py

HybridAlgorithm.py

首先,这个类是一个融合算法,可以将两个不同的模型按照指定比例融合成一个模型进行预测。
让我们看看该类运用到了什么库

from surprise import AlgoBase
from surprise import NormalPredictor

这个类运用了一个库中的两个类,分别是AlgoBase和NormalPredictor。其中AlgoBase是每个surprise库中每个单个预测算法都必须继承的基类。详情可以点击AlgoBase。NormalPredictor类是suprise库中的基于训练集的分布预测随机评分的算法,该分布假定为正常,详情请点击NormalPredictor

__init__函数

该函数是该类的初始化函数,主要是继承了surprise库中的算法基类AlgoBase

# 初始化函数
    def __init__(self, algorithms, weights,sim_options={}):
        AlgoBase.__init__(self)  # 调用AlgoBase类的初始化函数
        self.algorithms=algorithms  # 将传入的算法赋值给self.algorithms
        self.weights=weights  # 将传入的权重赋值给self.weights

fit函数

该函数是重写了基类中的fit函数,主要是将所有传入算法根据训练集进行训练。

 # 重写基类中的fit函数
    def fit(self,trainset):
        AlgoBase.fit(self,trainset)  # 在给定的训练集上训练算法。每个派生类都将此方法称为训练算法的第一步。它基本上只是初始化一些内部结构并设置self.trainset属性。
        for algo in self.algorithms:  # 分别用传入过的算法对给定数据集进行训练
            algo.fit(trainset)
        
        return self

estimate函数

该函数是用每个算法去计算在此电影与用户评价的所有电影之间建立相似度评分,接着提取前K个最相似的评分(默认为40),最后计算按用户评分加权的K个邻居的平均得分,再将每个算法得出的平均得分进行加权。

# 该函数是用每个算法去计算在此电影与用户评价的所有电影之间建立相似度评分,接着提取前K个最相似的评分(默认为40),最后计算按用户评分加权的K个邻居的平均得分,再将每个算法得出的平均得分进行加权。
    def estimate(self,u,i):
        scores_total = 0
        weights_total = 0
        for index in range (len(self.algorithms)):  # 调用算法池里面的每个算法,进行计算
            scores_total += self.algorithms[index].estimate(u,i) * self.weights[index]  # 每个模型加权
            weights_total += self.weights[index]

        return scores_total/weights_total  # 返回计算值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值