标签: ranking

Postgres - 基于连续值的排名

当连续序列被破坏时,如何创建一个从 1 重新开始的排名?

(点击下面的图片)

下表展示了用户的流程。他的总旅程由 8 个步骤组成,页面指示他在每个步骤中所处的页面。我想创建一个排名,当页面更改时该排名会重置。棘手的部分是让排名(第 6 页,第 1 页)重置为 1,而不是在第 4 页继续。按页面分区是不够的,因为我希望当用户更改回第 1 页并继续时重新启动排名。该表包含我想要实现的结果,我只是不知道如何在 Postgres 中做到这一点。

表排名

postgresql row-number ranking

3
推荐指数
1
解决办法
1175
查看次数

按日期对 pandas df 中的组进行排序和排名

从以下类型的数据框中,我希望能够id按日期对字段进行排序和排名:

df = pd.DataFrame({
'id':[1, 1, 2, 3, 3, 4, 5, 6,6,6,7,7], 
'value':[.01, .4, .2, .3, .11, .21, .4, .01, 3, .5, .8, .9],
'date':['10/01/2017 15:45:00','05/01/2017 15:56:00',
        '11/01/2017 15:22:00','06/01/2017 11:02:00','05/01/2017 09:37:00',
        '05/01/2017 09:55:00','05/01/2017 10:08:00','03/02/2017 08:55:00',
        '03/02/2017 09:15:00','03/02/2017 09:31:00','09/01/2017 15:42:00',
        '19/01/2017 16:34:00']})
Run Code Online (Sandbox Code Playgroud)

id根据日期有效排名或索引。

我用过

df.groupby('id')['date'].min()
Run Code Online (Sandbox Code Playgroud)

这允许我提取第一个日期(虽然我不知道如何使用它来过滤掉行),但我可能并不总是需要第一个日期 - 有时它会是第二个或第三个日期,所以我需要生成一个新的列,带有日期索引 - 结果将如下所示:

在此输入图像描述

关于这种排序/排名/标签有什么想法吗?

编辑

我最初的模型忽略了一个非常普遍的问题。

由于可能有一些id并行执行多个测试,因此它们显示在数据库中的多行中,并具有匹配的日期(date对应于它们的记录时间)。这些应该被算作相同的日期,而不是增加 date_rank:我已经生成了一个模型,并进行了更新date_rank以演示其外观:

df = pd.DataFrame({
'id':[1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6,6,6,7,7], 
'value':[.01, …
Run Code Online (Sandbox Code Playgroud)

python sorting group-by ranking pandas

3
推荐指数
1
解决办法
6436
查看次数

如何使用sklearn计算具有二进制相关性的NDCG?

我正在尝试计算二元相关性的 NDCG 分数:

from sklearn.metrics import ndcg_score
y_true = [0, 1, 0]
y_pred = [0, 1, 0]
ndcg_score(y_true, y_pred)
Run Code Online (Sandbox Code Playgroud)

并得到:

ValueError: Only ('multilabel-indicator', 'continuous-multioutput',  
'multiclass-multioutput') formats are supported. Got binary instead
Run Code Online (Sandbox Code Playgroud)

有没有办法使这项工作?

python ranking scikit-learn

3
推荐指数
1
解决办法
1001
查看次数

是否可以使用评估指标(如 NDCG)作为损失函数?

我正在研究一个名为DPR的信息检索模型,它基本上是一个神经网络(2 个 BERT),根据给定的查询对文档进行排名。目前,该模型以二进制方式(文档是否相关)进行训练,并使用负对数似然(NLL)损失。我想改变这种二元行为并创建一个可以处理分级相关性的模型(例如 3 个等级:相关、某种程度上相关、不相关)。我必须更改损失函数,因为目前我只能为每个查询分配 1 个正目标(DPR 使用 pytorch NLLLoss),而这不是我需要的。

我想知道是否可以使用像 NDCG(标准化贴现累积增益)这样的评估指标来计算损失。我的意思是,损失函数的全部意义在于告诉我们我们的预测有多偏离,而 NDCG 也在做同样的事情。

那么,我可以使用这样的指标来代替损失函数并进行一些修改吗?对于 NDCG,我认为从 1 (1 - NDCG_score) 中减去结果可能是一个很好的损失函数。真的吗?

致以最诚挚的问候,阿里。

evaluation information-retrieval ranking neural-network loss-function

3
推荐指数
1
解决办法
2402
查看次数

C#LINQ每日对时间序列值进行排序=>按日期划分,然后按值排序(从大到小)

我有一套约2000个独立的时间序列形式SortedList<DateTime,double>.每个系列对应于给定证券的每日流动性.我想创建这些值的每日排名.如果我用for循环执行此操作,我会执行以下操作:

  1. 为每个安全性创建一个新的空时间序列[日期,(整数)排名],以在给定日期保持其排名.这可以是a的形式SortedList<DateTime,double>.
  2. 创建了所有唯一日期的列表(并非每个证券的时间序列都具有每个日期的值.)
  3. 对于每个独特的日期,循环每个证券的每日流动性时间序列,以确定它是否具有该日期的值.
  4. 如果是,请将证券名称和值添加到每日排名数组[SecName,流动性值].
  5. 将数组从最大到最小排序(排名1 =最大值).
  6. 对于阵列中的每个安全性(secName),将日期和证券的等级添加到其时间序列(在步骤1中创建).

简而言之,这是每日流动性从最大到最小的排名.我可以让linq从对象中提取数据并按日期分组,但其余的超出了我的linq技能.

任何linq大师都会照顾到这一点?

下面概述了对象结构的简化版本.

注意:我有意创建了一个日期(2011,01,18),其中值(30)是相同的.在这种情况下,符号名称的子排名是可接受的.所以他们将排名第一名6753 JT,第二名6754 JT.6752 JT没有该日期的值,因此不会包含它.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ranking_Query
{
    class Program
    {
        static void Main(string[] args)
        {
            // created an instance of the datasource and add 3 securities to it
            Datasource ds = new Datasource() { Name = "test" };

            ds.securities.Add("6752 JT", new Security() { 
                timeSeries = new Dictionary<string, SortedList<DateTime, double>>() {
                    { "liquidity", new SortedList<DateTime, double>() { 
                        {new …
Run Code Online (Sandbox Code Playgroud)

c# linq time-series ranking

2
推荐指数
1
解决办法
1095
查看次数

按另一列分组的一列的最低值排序

这在标题中很难解释,但这里有一张表:

CATEGORY_ID   COUNT   GROUPING
1             130     H
2              54     B
3             128     C
4              70     D
5              31     E
6              25     F
7              64     A
8              59     F
9              66     B
10             62     E
11            129     C
12             52     G
13             27     A
14            102     A
15            101     C
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个查询来获取TOP 5 CATEGORY_ID's,首先按整体排序COUNT,然后基于该组使用该组中的其他CATEGORY_ID人,而不管他们是谁COUNT.所以,如果我想TOP 5基于这个规则(我可能解释得很差),我的结果将是:

CATEGORY_ID   COUNT   GROUPING
6             25      F <-- THE LOWEST COUNT OVERALL
8             59      F <-- THE NEXT …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server group-by sql-order-by ranking

2
推荐指数
1
解决办法
644
查看次数

变量排名不会跳过R中的位置

我有一个看起来像这样的矢量:

> vec
[1]  1  1  2  5 10
Run Code Online (Sandbox Code Playgroud)

我正试图将其转换为一种非奥林匹克排名形式,其中关系仍然是关系,但排名保持1分,即使在它之上有多个关系,所以:

> f(vec)
[1]  1  1  2  3  4
Run Code Online (Sandbox Code Playgroud)

而不是:

> rank(vec,ties.method="min")
[1] 1 1 3 4 5
Run Code Online (Sandbox Code Playgroud)

是否有功能在R中已经这样做了?我知道我可以将值转换为因子然后对因子进行排名,但这看起来有点迂回.(如果不是函数,是否有这种排名的名称?)

(乐趣:我之前没有注意到这一点,但看起来排名是幂等的,这有点酷:

> rank(vec,ties.method="min")
[1] 1 1 3 4 5
> rank(rank(vec,ties.method="min"),ties.method="min")
[1] 1 1 3 4 5
Run Code Online (Sandbox Code Playgroud)

)

r ranking ranking-functions

2
推荐指数
1
解决办法
355
查看次数

如何在Elasticsearch中提升索引类型?

我曾经这样搜索: curl -XGET localhost:9200/users/_search

但用户包含这样的用户a,b,c: curl -XGET localhost:9200/users/a,b,c/_search

users是第一个索引,a/b/c是类型。

如何a在此查询中增加类型?最好加上示例代码,谢谢。

ranking elasticsearch

2
推荐指数
1
解决办法
908
查看次数

具有排名功能的案例陈述

你好寻找帮助排名.

我正在使用SQL与Teradata合作,我正在尝试按特定组排序列表,然后按年龄排序.

例如:我想按组排名,然后只对21岁以下选定组下的那些进行排名.

但是,当我使用下面的查询时,它似乎没有考虑组中的成员,只有在它们符合case语句中的条件时才分配.

select
policy, 
age, 
case when age <'21' then  '1'else '0' end as Under21,
case when age <'21' then dense_rank () over (order by group, age desc)  else '0' end as Rank_Under_21
from   Table
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

sql ranking teradata ranking-functions

2
推荐指数
1
解决办法
5120
查看次数

Pyspark-保持联系的排名列

我正在寻找一种对数据框保留关系列进行排序的方法。专门针对此示例,我有一个pyspark数据框,如下所示,我想为colA和colB生成排名(尽管我希望支持能够对N个列进行排名)

 +--------+----------+-----+----+
 |  Entity|        id| colA|colB|
 +-------------------+-----+----+
 |       a|8589934652|   21|  50|
 |       b|       112|    9|  23|
 |       c|8589934629|    9|  23|
 |       d|8589934702|    8|  21|         
 |       e|        20|    2|  21|        
 |       f|8589934657|    2|   5|          
 |       g|8589934601|    1|   5|         
 |       h|8589934653|    1|   4|          
 |       i|8589934620|    0|   4|          
 |       j|8589934643|    0|   3|         
 |       k|8589934618|    0|   3|         
 |       l|8589934602|    0|   2|         
 |       m|8589934664|    0|   2|         
 |       n|        25|    0|   1|         
 |       o|        67|    0|   1|         
 |       p|8589934642|    0|   1|         
 |       q|8589934709|    0|   1|         
 | …
Run Code Online (Sandbox Code Playgroud)

ranking rank pyspark spark-dataframe

2
推荐指数
1
解决办法
4021
查看次数