当连续序列被破坏时,如何创建一个从 1 重新开始的排名?
(点击下面的图片)
下表展示了用户的流程。他的总旅程由 8 个步骤组成,页面指示他在每个步骤中所处的页面。我想创建一个排名,当页面更改时该排名会重置。棘手的部分是让排名(第 6 页,第 1 页)重置为 1,而不是在第 4 页继续。按页面分区是不够的,因为我希望当用户更改回第 1 页并继续时重新启动排名。该表包含我想要实现的结果,我只是不知道如何在 Postgres 中做到这一点。
从以下类型的数据框中,我希望能够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) 我正在尝试计算二元相关性的 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)
有没有办法使这项工作?
我正在研究一个名为DPR的信息检索模型,它基本上是一个神经网络(2 个 BERT),根据给定的查询对文档进行排名。目前,该模型以二进制方式(文档是否相关)进行训练,并使用负对数似然(NLL)损失。我想改变这种二元行为并创建一个可以处理分级相关性的模型(例如 3 个等级:相关、某种程度上相关、不相关)。我必须更改损失函数,因为目前我只能为每个查询分配 1 个正目标(DPR 使用 pytorch NLLLoss),而这不是我需要的。
我想知道是否可以使用像 NDCG(标准化贴现累积增益)这样的评估指标来计算损失。我的意思是,损失函数的全部意义在于告诉我们我们的预测有多偏离,而 NDCG 也在做同样的事情。
那么,我可以使用这样的指标来代替损失函数并进行一些修改吗?对于 NDCG,我认为从 1 (1 - NDCG_score) 中减去结果可能是一个很好的损失函数。真的吗?
致以最诚挚的问候,阿里。
evaluation information-retrieval ranking neural-network loss-function
我有一套约2000个独立的时间序列形式SortedList<DateTime,double>.每个系列对应于给定证券的每日流动性.我想创建这些值的每日排名.如果我用for循环执行此操作,我会执行以下操作:
SortedList<DateTime,double>.简而言之,这是每日流动性从最大到最小的排名.我可以让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) 这在标题中很难解释,但这里有一张表:
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) 我有一个看起来像这样的矢量:
> 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)
)
我曾经这样搜索:
curl -XGET localhost:9200/users/_search
但用户包含这样的用户a,b,c:
curl -XGET localhost:9200/users/a,b,c/_search
users是第一个索引,a/b/c是类型。
如何a在此查询中增加类型?最好加上示例代码,谢谢。
你好寻找帮助排名.
我正在使用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)
我正在寻找一种对数据框保留关系列进行排序的方法。专门针对此示例,我有一个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 ×10
group-by ×2
python ×2
c# ×1
evaluation ×1
linq ×1
pandas ×1
postgresql ×1
pyspark ×1
r ×1
rank ×1
row-number ×1
scikit-learn ×1
sorting ×1
sql ×1
sql-order-by ×1
sql-server ×1
t-sql ×1
teradata ×1
time-series ×1