• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

LTR-pointwise之prank-python代码实现

ml admin 2年前 (2018-03-21) 1735次浏览 0个评论 扫描二维码

修改记录:

2017/3/22 修改代码中的部分 BUG
核心代码 https://github.com/zhusimaji/ml/blob/master/prank.py

def learn_to_rank(self):
    print 'start to learn rank'
    new_label = [0 for x in range(self.rank_label)]
    tao = []

    self.weight = [0.0 for x in range(self.rank_cate)]
    for num in range(self.rank_iter):
        for i in tqdm(range(self.rank_num)):
            predict_rank = 0
            sumwx = sum([self.weight[x] * self.source_data[i][x + 2]
                         for x in range(len(self.weight))])

            # 预测排名
            for r in range(self.rank_label):
                if sumwx - self.br[r] < 0:
                    predict_rank = r
                    break
            # 获取真实 label
            if self.source_data[i][0] != predict_rank:
                for r in range(self.rank_label):
                    if self.source_data[i][0] - r < 0:
                        new_label[r] = -1
                    else:
                        new_label[r] = 1

            tao = [new_label[x] if (
                sumwx - self.br[x]) * new_label[x] <= 0 else 0.0 for x in range(self.rank_label)]
            tao_sum = sum(tao)
            new_weight = [self.weight[x] + tao_sum * self.source_data[i][x+2]
                          for x in range(self.rank_cate)]
            self.weight = new_weight
            for  r in  range(self.rank_label):
                self.br[r] = self.br[r] - tao[r]

Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明LTR-pointwise 之 prank-python 代码实现
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!