【算法】多榜单排序->综合排序问题

数据结构课程设计----综合排序 《数据结构课程设计》报告 日期: 项目名称: 综合排序 一、项目简介和需求分析 排序(sorting是计箅机程序设计的一种重要操作,它的功能是将一组任意顺序数据元素(记录),根据某一个(或几个)关键字按一定的顺序里新排列成为有序的序列。由于待排序的记录数量不同,使得排序过程中涉及的存储器的不同,可将排序方法分为两大类:一类是内部排序,指的是待排序的记录存放在计算机随机存储器中进行的排序过程;另一类是外部排序,指的是待排序记录的数量很大,以致内存一次不能容纳全部记 阅读详情

问题:N个候选对象,每个对象在m个榜单上排序不同,如何给出一个综合排序?

当需要对N个候选对象(如产品、选手、高校等)的m个不同榜单进行综合排序时,核心目标是兼顾各榜单的信息价值、解决排序冲突,并输出具有合理性和可解释性的最终结果。整个过程需分4步系统推进,从数据预处理到方法选择,再到结果验证,具体如下:

一、第一步:数据预处理——统一“语言”,消除干扰

不同榜单的排序形式可能差异极大(如“名次1/2/3”“分数90/85/80”“等级A/B/C”),且可能存在缺失值或异常榜单,需先标准化处理,为后续计算奠定基础。

1. 统一排序格式

将所有榜单的信息转换为可量化的“优势分数”(分数越高代表排名越优),常见转换规则如下:

原始榜单类型转换逻辑(以“候选数=N”为例)示例(N=3,候选A/B/C)
名次型(1=最优)逆名次得分:第k名得「N - k + 1」分(避免名次为0)榜单1:A(1)→3分,B(2)→2分,C(3)→1分
分数型(高分最优)直接使用原始分数,或归一化到[1,N]区间(消除不同榜单分数范围差异)榜单2:A(85)、B(92)、C(78)→归一化后A(2)、B(3)、C(1)
等级型(A=最优)等级映射为固定分数:A→N,B→N-1,…,末级→1榜单3:A(B)→2分,B(A)→3分,C©→1分
布尔型(入选/未入选)入选→N分,未入选→1分(或根据“入选难度”调整)榜单4:A(入选)→3分,B(未入选)→1分,C(入选)→3分
明确并列排名的量化规则

榜单中的“并列”(如2个候选并列第2)需转化为可计算的数值,常见两种规则(需所有榜单统一):

  • 规则1:密集排名(Dense Ranking)
    并列后下一名不跳号,例:1, 2, 2, 3(适合并列占比高的榜单)。
    量化逻辑:并列的k个候选,均取“其理论位置的平均值”(如2个并列第2,位置值均为2)。
  • 规则2:稀疏排名(Sparse Ranking)
    并列后下一名跳号,例:1, 2, 2, 4(适合强调“绝对位次”的榜单)。
    量化逻辑:并列的k个候选,位置值取“首名位置+末名位置”的平均值(如2个并列第2,末名是3,位置值为(2+3)/2=2.5)。

示例:3个候选A/B/C,榜单1为「A=1,B=2,C=2」

  • 按规则1:A=1,B=2,C=2;
  • 按规则2:A=1,B=2.5,C=2.5。
2. 处理缺失与异常值
  • 缺失值(某候选未出现在某榜单):
    若缺失是“候选未达标”(如未进入榜单门槛),赋值1分(最低分);若缺失是“榜单遗漏”,用该候选在其他榜单的平均得分填充(或赋值N/2分,代表中等水平)。
  • 异常榜单(某榜单排序与多数榜单冲突极大,如故意抬升/打压某候选):
    用“离群值检测”识别(如计算该榜单与其他所有榜单的肯德尔和谐系数,系数<0.1则判定为异常),后续可降低其权重或直接剔除。

二、第二步:权重确定——区分榜单“重要性”

并非所有榜单同等可信(如权威机构榜单>普通用户投票榜),需为每个榜单分配权重(记为 w 1 , w 2 , . . . , w m w_1, w_2, ..., w_m w1​,w2​,...,wm​,满足 ∑ i = 1 m w i = 1 \sum_{i=1}^m w_i = 1 ∑i=1m​wi​=1),权重方法分主观法和客观法两类:

权重类型核心逻辑适用场景示例
主观法基于领域知识或专家判断直接赋值榜单用途明确、可解释性要求高(如评选“年度最佳产品”)3个榜单:权威机构榜(w=0.5)、用户投票榜(w=0.3)、媒体测评榜(w=0.2)
客观法基于榜单数据的“信息量”自动计算,避免人为偏见榜单数量多、无明确权威差异(如多平台电影评分)1. 方差权重:榜单内得分方差越大(区分度越高),权重越高;
2. 熵权法:榜单信息熵越小(不确定性越低),权重越高;
3. 一致性权重:与其他榜单排序一致性越高(肯德尔系数大),权重越高

三、第三步:选择综合排序方法——匹配场景需求

根据榜单数据类型(名次/分数)、冲突程度(各榜单排序差异大小)和结果用途,选择不同的综合方法,以下是5种最常用的方法(按复杂度从低到高排序):

方法1:加权平均法(适用于“分数型榜单”或已转换为分数的榜单)

核心逻辑:计算每个候选在所有榜单的“加权得分总和”,按总和降序排序,是最直观、易实现的方法。

步骤:

  1. 对每个候选 x x x,计算其在第 i i i个榜单的得分 s x , i s_{x,i} sx,i​(已预处理为优势分数);
  2. 计算候选 x x x的综合得分 S x = ∑ i = 1 m w i × s x , i S_x = \sum_{i=1}^m w_i \times s_{x,i} Sx​=∑i=1m​wi​×sx,i​;
  3. 按 S x S_x Sx​从高到低排序,得到最终结果。

示例:
候选A/B/C,2个榜单(权重 w 1 = 0.6 w_1=0.6 w1​=0.6, w 2 = 0.4 w_2=0.4 w2​=0.4):

  • 榜单1得分:A=3,B=2,C=1;榜单2得分:A=2,B=3,C=1;
  • 综合得分:A=3×0.6 + 2×0.4=2.6;B=2×0.6 + 3×0.4=2.4;C=1×0.6 + 1×0.4=1;
  • 最终排序:A>B>C。

优缺点:优点是计算简单、可解释性强;缺点是未考虑“排序的相对关系”(如仅关注分数,忽略某候选在多数榜单中比另一候选排名高的事实)。

方法2:波达计数法(Borda Count,适用于“名次型榜单”)

核心逻辑:将“名次”直接转换为“波达分数”(名次越优,分数越高),再按加权总分排序,是投票选举、多榜单聚合的经典方法。

步骤:

  1. 对第 i i i个榜单,若候选总数为N,第k名的波达分数为 b k , i = N − k + 1 b_{k,i} = N - k + 1 bk,i​=N−k+1(与预处理的“逆名次得分”一致);
  2. 计算候选 x x x的加权波达总分 B x = ∑ i = 1 m w i × b x , i B_x = \sum_{i=1}^m w_i \times b_{x,i} Bx​=∑i=1m​wi​×bx,i​;
  3. 按 B x B_x Bx​降序排序。

示例:
N=4(候选A/B/C/D),2个榜单( w 1 = 0.5 w_1=0.5 w1​=0.5, w 2 = 0.5 w_2=0.5 w2​=0.5):

  • 榜单1名次:A(1)、B(2)、C(3)、D(4)→波达分:4,3,2,1;
  • 榜单2名次:B(1)、A(2)、D(3)、C(4)→波达分:4,3,1,2;
  • 综合总分:A=(4+3)×0.5=3.5;B=(3+4)×0.5=3.5;C=(2+1)×0.5=1.5;D=(1+2)×0.5=1.5;
  • 若平局,可补充“ pairwise 胜率”(A在1个榜单赢B,B在1个榜单赢A,仍平局则引入更多权重规则)。

优缺点:优点是贴合“名次”场景,考虑了所有候选的相对位置;缺点是对“末位名次”敏感(如N=100时,第99名和第100名的分数差异仅1,可能忽略实际差距)。

方法3:布拉德利-特里模型(Bradley-Terry Model,适用于“ pairwise 比较需求”)

核心逻辑:不直接依赖名次或分数,而是计算“候选A比候选B更优”的概率,基于所有榜单中A与B的“胜负次数”建模,最终按概率排序。

步骤:

  1. 对每对候选(A,B),统计在m个榜单中A排名高于B的次数 c A , B c_{A,B} cA,B​(A赢),B高于A的次数 c B , A c_{B,A} cB,A​(B赢);
  2. 定义参数 θ x \theta_x θx​(候选x的“优势度”, θ x > 0 \theta_x>0 θx​>0),则A比B优的概率为 P ( A > B ) = θ A θ A + θ B P(A>B) = \frac{\theta_A}{\theta_A + \theta_B} P(A>B)=θA​+θB​θA​​;
  3. 通过极大似然估计(MLE)求解 θ x \theta_x θx​:目标是最大化似然函数 L = ∏ A > B [ P ( A > B ) ] c A , B × [ P ( B > A ) ] c B , A L = \prod_{A>B} [P(A>B)]^{c_{A,B}} \times [P(B>A)]^{c_{B,A}} L=∏A>B​[P(A>B)]cA,B​×[P(B>A)]cB,A​;
  4. 按 θ x \theta_x θx​从大到小排序, θ x \theta_x θx​越大,候选越优。

示例:
候选A/B/C,3个榜单:

  • 榜单1:A>B>C;榜单2:B>A>C;榜单3:A>C>B;
  • pairwise 次数:A赢B(2次),B赢A(1次);A赢C(3次),C赢A(0次);B赢C(3次),C赢B(0次);
  • 求解得 θ A ≈ 1.5 \theta_A≈1.5 θA​≈1.5, θ B ≈ 1.0 \theta_B≈1.0 θB​≈1.0, θ C ≈ 0.5 \theta_C≈0.5 θC​≈0.5;最终排序:A>B>C。

优缺点:优点是聚焦“相对优势”,适合榜单冲突大的场景;缺点是计算复杂(需MLE求解),且当候选数N大时(如N>100),计算量显著增加。

方法4:中位数排序法(适用于“存在极端榜单”)

核心逻辑:对每个候选,取其在m个榜单中的“中位数名次”,按中位数升序排序(中位数越小越优),可有效抵御极端榜单的干扰。

步骤:

  1. 保留每个候选x在m个榜单中的原始名次(无需转换为分数),记为 r x , 1 , r x , 2 , . . . , r x , m r_{x,1}, r_{x,2}, ..., r_{x,m} rx,1​,rx,2​,...,rx,m​;
  2. 对 r x , i r_{x,i} rx,i​排序,取中位数 M e d x Med_x Medx​(若m为偶数,取中间两个数的平均);
  3. 按 M e d x Med_x Medx​升序排序,若中位数相同,比较“众数名次”或“平均名次”。

示例:
候选A,5个榜单名次:1,2,1,100,3→排序后:1,1,2,3,100→中位数=2;
候选B,5个榜单名次:2,3,2,4,5→排序后:2,2,3,4,5→中位数=3;
最终排序:A>B(即使A有1个极端名次100,中位数仍更优)。

优缺点:优点是抗极端值能力强,适合有“ outliers 榜单”的场景;缺点是丢失了榜单的权重信息(所有榜单同等对待)。

方法5:机器学习排序法(适用于“大数据、多特征场景”)

核心逻辑:将每个榜单的排序作为“特征”,结合标注数据(如历史综合排序结果)训练排序模型,适合N和m均较大的场景(如电商商品多平台排序聚合)。

常见模型:

  • 点排序模型:将“综合得分”作为目标变量,用线性回归、随机森林等预测每个候选的得分,按得分排序;
  • ** pairwise 排序模型**:将“候选A是否优于候选B”作为分类目标,用SVM、神经网络等训练,再生成全局排序;
  • 列表排序模型:直接优化“NDCG”“MAP”等排序评价指标,用LambdaMART(梯度提升树的改进版)等模型。

优缺点:优点是能利用多维度信息(如榜单发布时间、发布平台用户画像),精度高;缺点是需要标注数据,可解释性差,实现成本高。

四、第四步:结果验证与调整——确保合理性

综合排序后,需通过2个关键指标验证结果的可靠性,若存在问题则回溯调整:

1. 肯德尔和谐系数(Kendall’s W)

衡量m个榜单之间的“一致性程度”:

  • 公式: W = 12 ∑ x = 1 N ( R x − R ˉ ) 2 m 2 ( N 3 − N ) W = \frac{12\sum_{x=1}^N (R_x - \bar{R})^2}{m^2(N^3 - N)} W=m2(N3−N)12∑x=1N​(Rx​−Rˉ)2​,其中 R x R_x Rx​是候选x的加权总名次, R ˉ \bar{R} Rˉ是平均总名次;
  • 取值范围: W ∈ [ 0 , 1 ] W \in [0,1] W∈[0,1],W越接近1,榜单一致性越高,综合排序越可信;W<0.3时,需重新检查异常榜单或权重分配。
2. 敏感性分析

测试权重变化对结果的影响:

  • 轻微调整某榜单的权重(如从0.5调整为0.45),观察综合排序是否大幅变化;
  • 若排序变化剧烈(如Top3候选互换),说明结果“权重敏感”,需重新优化权重(如采用客观权重法)。

总结:方法选择决策树

  1. 若榜单是分数型、追求简单可解释→选「加权平均法」;
  2. 若榜单是名次型、候选数少→选「波达计数法」;
  3. 若榜单冲突大、需聚焦相对优势→选「布拉德利-特里模型」;
  4. 若存在极端榜单、需抗干扰→选「中位数排序法」;
  5. 若数据量大、有标注数据、追求高精度→选「机器学习排序法」。

通过以上步骤,可系统性地将多个差异榜单聚合为一个兼具合理性和可解释性的综合排序。

import numpy as np
from scipy.optimize import minimize

def weighted_average_ranking(scores, weights=None):
    """
    加权平均法综合排序
    
    参数:
    scores: 二维数组,shape为(N, m),其中N为候选数,m为榜单数
            scores[i][j]表示第i个候选在第j个榜单的得分(已预处理为优势分数)
    weights: 一维数组,长度为m,表示每个榜单的权重,默认为等权重
    
    返回:
    ranking: 排序后的候选索引(从0开始)
    total_scores: 每个候选的加权总得分
    """
    n_candidates, n_lists = scores.shape
    
    # 默认为等权重
    if weights is None:
        weights = np.ones(n_lists) / n_lists
    
    # 计算加权总分
    total_scores = np.dot(scores, weights)
    
    # 按总分降序排序,返回索引
    ranking = np.argsort(total_scores)[::-1]
    
    return ranking, total_scores

def borda_count_ranking(ranks, weights=None):
    """
    波达计数法综合排序
    
    参数:
    ranks: 二维数组,shape为(N, m),其中N为候选数,m为榜单数
           ranks[i][j]表示第i个候选在第j个榜单的名次(1为最优)
    weights: 一维数组,长度为m,表示每个榜单的权重,默认为等权重
    
    返回:
    ranking: 排序后的候选索引(从0开始)
    total_borda: 每个候选的加权波达总分
    """
    n_candidates, n_lists = ranks.shape
    
    # 默认为等权重
    if weights is None:
        weights = np.ones(n_lists) / n_lists
    
    # 计算每个榜单的波达分数
    borda_scores = np.zeros_like(ranks, dtype=float)
    for j in range(n_lists):
        # 波达分数:第k名得(N - k + 1)分
        borda_scores[:, j] = n_candidates - ranks[:, j] + 1
    
    # 计算加权总波达分数
    total_borda = np.dot(borda_scores, weights)
    
    # 按总波达分数降序排序,返回索引
    ranking = np.argsort(total_borda)[::-1]
    
    return ranking, total_borda

def bradley_terry_ranking(ranks, max_iter=1000, tol=1e-6):
    """
    布拉德利-特里模型综合排序
    
    参数:
    ranks: 二维数组,shape为(N, m),其中N为候选数,m为榜单数
           ranks[i][j]表示第i个候选在第j个榜单的名次(1为最优)
    max_iter: 最大迭代次数
    tol: 收敛容差
    
    返回:
    ranking: 排序后的候选索引(从0开始)
    theta: 每个候选的优势度参数
    """
    n_candidates, n_lists = ranks.shape
    
    # 统计每对候选之间的胜负次数
    win_counts = np.zeros((n_candidates, n_candidates), dtype=int)
    
    for j in range(n_lists):
        # 对当前榜单的名次进行排序,得到候选的排名顺序
        # 排序后,index_order[i]表示在第j个榜单中排名第i+1的候选索引
        index_order = np.argsort(ranks[:, j])
        
        # 对于每个候选,统计它比哪些候选表现更好
        for i in range(n_candidates):
            for k in range(i + 1, n_candidates):
                # index_order[i] 比 index_order[k] 排名更优
                win_counts[index_order[i], index_order[k]] += 1
    
    # 定义似然函数(负的,因为我们要用 minimize 求最小值)
    def negative_log_likelihood(theta):
        # 确保theta为正数
        theta = np.exp(theta)  # 使用指数确保theta > 0
        log_likelihood = 0
        
        for i in range(n_candidates):
            for j in range(n_candidates):
                if i != j:
                    log_likelihood += win_counts[i, j] * np.log(theta[i] / (theta[i] + theta[j]))
        
        return -log_likelihood  # 返回负的对数似然,用于最小化
    
    # 初始参数值
    initial_theta = np.zeros(n_candidates)
    
    # 优化求解
    result = minimize(negative_log_likelihood, initial_theta, method='BFGS', 
                      options={'maxiter': max_iter, 'gtol': tol})
    
    # 转换回原始参数空间(指数函数的逆操作)
    theta = np.exp(result.x)
    
    # 按优势度参数降序排序,返回索引
    ranking = np.argsort(theta)[::-1]
    
    return ranking, theta

# 示例演示
if __name__ == "__main__":
    # 候选对象名称
    candidates = ["A", "B", "C", "D"]
    n_candidates = len(candidates)
    
    # 示例1:加权平均法(使用已预处理的优势分数)
    print("=== 加权平均法 ===")
    # 每个候选在4个榜单上的优势分数(已预处理)
    scores = np.array([
        [90, 85, 92, 88],  # A的分数
        [85, 90, 88, 92],  # B的分数
        [75, 78, 80, 76],  # C的分数
        [60, 65, 58, 62]   # D的分数
    ])
    weights = np.array([0.3, 0.3, 0.2, 0.2])  # 各榜单权重
    ranking, total_scores = weighted_average_ranking(scores, weights)
    print("排序结果:", [candidates[i] for i in ranking])
    print("综合得分:", [f"{total_scores[i]:.2f}" for i in ranking])
    print()
    
    # 示例2:波达计数法(使用名次)
    print("=== 波达计数法 ===")
    # 每个候选在3个榜单上的名次(1为最优)
    ranks = np.array([
        [1, 2, 1],  # A的名次
        [2, 1, 2],  # B的名次
        [3, 3, 4],  # C的名次
        [4, 4, 3]   # D的名次
    ])
    weights = np.array([0.5, 0.3, 0.2])  # 各榜单权重
    ranking, total_borda = borda_count_ranking(ranks, weights)
    print("排序结果:", [candidates[i] for i in ranking])
    print("波达总分:", [f"{total_borda[i]:.2f}" for i in ranking])
    print()
    
    # 示例3:布拉德利-特里模型(使用名次)
    print("=== 布拉德利-特里模型 ===")
    # 使用与波达计数法相同的名次数据
    ranking, theta = bradley_terry_ranking(ranks)
    print("排序结果:", [candidates[i] for i in ranking])
    print("优势度参数:", [f"{theta[i]:.4f}" for i in ranking])

参考

关于 Bradley-Terry 模型的深度解析

考虑平局的Bradley-Terry-Davidson 模型

【数据结构】排序算法(上)—— 排序算法概述 从今天开始,我们就将开始学习数据结构的最后一部分关于排序算法的相关知识。并且在今天我们要学习的这些排序算法中,其中一部分的排序方式是我们在前面的学习中就了解过的,例如直接选择排序、冒泡排序等等。当然还有一部分我们还没有了解过的排序算法,例如希尔排序与归并排序等等。这些排序算法原本归属不同的知识部分,而现在我们将它们放在一起进行对比学习。 阅读详情

相关推荐

综合排序算法

冒泡,快速,希尔等排序问题,网络转载,供大家分享

排序算法综合整理

排序算法综合整理 文章目录排序算法综合整理一、直接插入排序思想:二、希尔排序思想:三、归并排序怎样求逆序数四、快速排序五、堆排序六、计数排序七、桶排序八、基数排序 一、直接插入排序思想: 从小到大排序:从第二个数开始,若非递增,则插入前面有序序列中,该位置前面一位小于它,后面一位大于它; 二分插入排序:因为前面序列有序,则可用二分找到该位置; 用了二分可以减少比较大小的次数 撸代码: #include<stdio.h> int main() { int a[10]={56

HappyCode 1243

排序算法基础、改进综合

排序算法基础、改进综合: //冒泡排序 //定向冒泡[鸡尾酒]排序 //选择排序 //改进的选择排序 //直接插入排序 //二分插入排序 //希尔排序 //自顶向下地归并排序 //自底向上地归并排序 //堆排序 //快速排序 //改进的快速排序:三向切分快速排序

【数据结构】之排序算法综合篇

博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主威威喵原创,请多支持与指教。 本文首发于此 博主:威威喵|博客主页:https://blog.youkuaiyun.com/smile_running 数据结构课程的内容基本忘光了,所以又拾起数据结构与算法的书本,重新学习了一边排序算法的原理和实现,在经过几个晚上的努力,终于把这几种排序算法给搞明白了,下...

你若盛开,蜜蜂自来 7662

排序算法的综合实例(源程序+设计文档)

29. 排序综合(限1 人完成) 利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 要求: 1) 至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 3) 如果采用4种或4种以上的方法者,可适当加分。 PS:采用了直接选择排序算法、冒泡排序、希尔排序、直接插入排序这四种排序算法。

[全志T113]:ST7701 86屏幕驱动

[全志T113]:ST7701 86屏幕驱动

LINKKEEE的博客 3141

常见七大排序算法总结--超详细适合初学者

一、排序算法的概念以及应用 (一)概念 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。 (二)分类 内部排序:数据元素全部放在内存中的排序。 外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。 (三)应用 1.淘宝京东商品的销量排名 2.各大高校的综合实力排名 3.以及各大城市GDP排名 4.外卖评分以及百度竞价排名 (四)常见的排序算法 二、排序算法的实现(升序排列) (一)

qq_41219243的博客 1929

Ubuntu操作系统等保测评指南

Ubuntu操作系统等保测评指南

qq_40181198的博客 7029

详解阿里巴巴1688日常业务中的榜单算法

导读:本文详解阿里巴巴1688日常业务中的榜单算法。作者:阿里集团 新零售技术事业群 CBU技术部来源:大数据DT(ID:hzdashuju)在1688日常的业务场景中,榜单(如图6-1...

华章IT官方博客 2011

USB PD快充功率监测仪:高精度嵌入式USB电压电流测量终端

USB供电已从数据接口演进为关键电源总线,尤其在PD快充场景下,工程师亟需对5V–20V宽压范围内的实时电压、电流及瞬时功率进行精准捕获。其底层原理依赖高共模抑制比的高边电流检测与分压采样+ADC数字化处理,结合LDO低噪声供电保障模拟链路精度。该类设备的技术价值在于以低成本实现协议无关的‘电气层可视化’,规避商用ASIC测试仪的黑盒局限,支撑PD充电验证、电源设计调试与教学实验等工程实践。本文介绍的开源USB表即基于N32G430 MCU与INA199电流检测芯片,覆盖USB-C输入/输出双通道监测,具备

weixin_42174098的博客 207

研发工作量科学量化评估模型:从多维系数到等级落地指南

摘要:本文提出了一套基于多维系数的科学量化评估模型,用于精准评估软件开发工作量。该模型从需求复杂度、技术难度、质量要求和依赖风险四个核心维度进行量化评估,通过系数乘积计算综合工作量。文章详细说明了各维度的系数区间划分标准,并演示了从基础工作量估算到综合系数计算的具体步骤。该模型通过结构化评估过程,将主观经验转化为客观量化指标,帮助团队提高工作量评估的准确性,增强项目交付的可预测性。其价值在于使评估过程透明化、结构化和可追溯,从而减少项目延期风险,优化资源规划。

友莘居士的博客 1684

榜单类应用我所喜欢的算法

对于热文榜单、热门消息榜单、热门事件榜单,郑昀最喜欢用的算法是: 这个算法的解释参见我的文章:《Hacker News与Reddit的算法比较》。 其他排序算法,参见我的博文: 《微博关注者数量在计算中的作...

chuoyang8763的博客 324

YOLOv8 ultralytics使用笔记----labelme标记数据,训练模型、追踪目标。

Ultralytics是一个Python库,它是为执行高级计算机视觉任务而创建的,如对象检测、实例分割、图像分类等。Ultralytics为YOLO模型发布了一个全新的存储库,它被构建为用于机器视觉统一框架。这里先利用,并激活。

qq_48050838的博客 1万+

【排序算法】数据结构排序详解

排序算法的实现

m0_56069910的博客 1680

【深度学习新浪潮】Score Matching(分数匹配):原理、推导与PyTorch实战

在概率模型训练中,配分函数(归一化常数)是绕不开的难题——尤其是能量模型(EBM)、扩散模型等未归一化模型,直接计算配分函数几乎不可能。Score Matching(分数匹配)作为一种无归一化的参数估计方法,通过拟合概率密度的对数梯度(分数函数),彻底避开了配分函数的计算,成为生成建模、密度估计的核心技术之一。本文将从基础概念出发,逐步推导Score Matching的核心公式,并结合PyTorch实现一个可直接运行的实战案例,帮你彻底理解这一关键技术。Score Matching的核心是。

专注:太空算力、AI infra、异构调度、大模型成本工程 250

AUTOSAR知识点 之 XCP (二):XCP基础概念

学习XCP的过程中,对XCP的基本概念要做一个全面的认知,因为里面有很多缩写以及难以理解的点,假设对此模模糊糊一知半解,那么对整个协议栈的认知会遇到极大的障碍。XCP的信号流传输图示如下XCP 标准主要分为 5 个部分:这部分提供了对于协议的一个概况介绍,包括 XCP 的功能和基础性内容。这部分内容对协议层进行了详细的规范和说明。

梦想技术家 2769

【数据结构入门】排序算法之插入排序与选择排序

排序算法的选择可以根据数据的特点、数据量以及排序的要求来确定。不同的排序算法具有不同的时间复杂度和空间复杂度,因此在实际应用中需要根据具体情况选择合适的排序算法。

KevinRay_0854的博客 2030

【GameFramework框架内置模块】17、声音(Sound)

声音(Sound)模块是管理音频的模块,比如播放、停止、修改音量等,支持淡入淡出、AudioMixer等高级设置。声音(Sound)的配置面板如下所示:所有的声音统一按照组来分,可以根据需要添加或者溢出组,声音组可以配置Agent的数量和音量等。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1912

关于优快云榜单的一些说明

为了让大家更加了解优快云的榜单,我们对此做下简单说明。 一、榜单种类 我们的榜单主要分为三类: 内容榜:全站综合热榜、领域内容榜、热门专栏榜 用户榜:新晋作者榜、作者周榜、作者总榜、历史贡献榜、问答答主排行榜 技术榜:T500 标杆采用指数 二、个别榜单的规则说明 1、全站综合热榜 关于榜单排序,算法根据文章的点击率和互动率,结合一定的时间衰减,对符合要求的原创文章,进行热度值排序。 鉴于有些用户刷量,我们会经常巡查榜单,一旦发现恶意广告者,将拉黑文章,严重者会拉黑用户。 2、作者周榜

优快云榜单 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数据结构与算法 - 实时榜单:优先队列的工程实现

数据结构与算法在实时榜单中的应用 本文探讨了优先队列(堆结构)在实时榜单系统中的工程实现方案。针对直播平台、电商系统等需要实时排名展示的场景,传统数据库排序或全量内存排序难以满足高性能需求。文章分析了最大堆和最小堆的原理及适用场景,并提供了Python和C++两种实现方式: 全局实时榜单:基于最大堆实现,采用懒删除策略处理更新,适用于无固定Top K的排名场景 固定Top K榜单:推荐使用最小堆方案,仅维护当前Top K元素,具有内存可控、查询高效的特点 通过堆数据结构的O(log n)插入删除和O(1)查

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2024年最受欢迎的公司榜单。

大家好,我是苍何。刷到一份 2024 福布斯中国最受欢迎的公司榜单,觉得很有必要给大家看看。这份榜单是福布斯中国发布的最新数据,要知道,这已经是他们第四年发布了,很多问题很多的小明就奇怪了,你说最受欢迎就欢迎啊?,这玩意有数据支撑吗?当然有!首先福布斯中国这机构光听着就唬人,这家伙是美国著名财经媒体《福布斯》杂志在中国的分支机构,专注于提供与中国相关的商业、金融、投资、科技、企业家等领域的报道和分析。别的不说,《福布斯》全球富豪榜可是我最喜欢看的。(做不了富豪,过个眼瘾🐶)

一个成长中的程序员,期待用技术的眼光生活 1035

榜单大模拟

给定一场CCPC比赛的题目数量和提交列表,请你输出终榜。 榜单的格式见输出和样例 根据比赛规则,榜单有以下要求: 每道题的通过罚时按照分钟计算。每次未通过提交增加20分钟罚时,保证每个队伍罚时均小于10000分钟。到比赛结束都没有通过的题目不计入该队伍的罚时。 每队通过后的题目在榜单的题目栏中用+显示。如果仅提交一次就通过了,则显示+。否则显示+k,kkk 为这个队伍对于这道题的总提交次数。保证 kkk 不大于 999。 每队提交但是未通过的题目在榜单的题目栏中用-显示。如果仅提交一次,则显示-。否则显

mrgaohaihang的博客 403

C语言期末大作业之榜单打印

根据题目的描述,完成榜单打印,C语言实现

FF小迷糊吖~ 679

Golang排序实战:用sort.SliceStable搞定电商订单、用户榜单等多条件排序

本文详细介绍了如何使用Golang的sort.SliceStable函数实现电商订单和用户榜单的多条件排序。通过实战案例,展示了如何确保排序稳定性、处理复杂业务逻辑,并提供了性能优化技巧和高级排序模式,帮助开发者高效解决实际业务中的排序难题。

weixin_30256901的博客 420

阿里巴巴B2B电商算法首次对外公开

导读:本文详解阿里巴巴1688日常业务中的榜单算法。作者:阿里集团 新零售技术事业群 CBU技术部来源:大数据DT(ID:hzdashuju)在1688日常的业务场景中,榜单(如图6-1...

大数据 1954
上一篇: 【爬虫】PlayWright使用说明
下一篇: 【AIGC】自定义曲线用函数拟合
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值