小编Mar*_*cus的帖子

在groupby中按日期时间过滤的有效方法

鉴于DataFrame生成:

import numpy as np
import pandas as pd
from datetime import timedelta

np.random.seed(0)
rng = pd.date_range('2015-02-24', periods=14, freq='9H')
ids = [1]*5 + [2]*2 + [3]*7
df = pd.DataFrame({'id': ids, 'time_entered': rng, 'val': np.random.randn(len(rng))})
Run Code Online (Sandbox Code Playgroud)

df

    id  time_entered        val
0   1   2015-02-24 00:00:00 1.764052
1   1   2015-02-24 09:00:00 0.400157
2   1   2015-02-24 18:00:00 0.978738
3   1   2015-02-25 03:00:00 2.240893
4   1   2015-02-25 12:00:00 1.867558
5   2   2015-02-25 21:00:00 -0.977278
6   2   2015-02-26 06:00:00 0.950088
7   3   2015-02-26 15:00:00 …
Run Code Online (Sandbox Code Playgroud)

python optimization numpy pandas pandas-groupby

7
推荐指数
1
解决办法
132
查看次数

多条件提前停止

我正在为推荐系统(项目推荐)进行多类分类,我目前正在使用sparse_categorical_crossentropy损失训练我的网络。因此,EarlyStopping通过监控我的验证损失来执行是合理的,val_loss例如:

tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
Run Code Online (Sandbox Code Playgroud)

它按预期工作。然而,网络(推荐系统)的性能是由 Average-Precision-at-10 来衡量的,并在训练期间作为一个指标进行跟踪,如average_precision_at_k10. 因此,我还可以使用此指标执行提前停止:

tf.keras.callbacks.EarlyStopping(monitor='average_precision_at_k10', patience=10)
Run Code Online (Sandbox Code Playgroud)

这也按预期工作。

我的问题: 有时验证损失会增加,而 10 的平均精度正在提高,反之亦然。因此,当且仅当两者都在恶化时,我需要监控两者并提前停止。我想做什么:

tf.keras.callbacks.EarlyStopping(monitor=['val_loss', 'average_precision_at_k10'], patience=10)
Run Code Online (Sandbox Code Playgroud)

这显然不起作用。任何想法如何做到这一点?

python recommendation-engine python-3.x keras tensorflow

6
推荐指数
1
解决办法
1455
查看次数

删除已排序 DataFrame 中的相邻重复项

删除相邻重复项之前已讨论过,但仅就直接相邻项(上方/下方一行)而言

我有以下数据框:

df = pd.DataFrame(data={"item_no": [11, 4, 4, 4, 7, 8, 7, 11, 11, 5, 5, 6, 4], "time": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]})
Run Code Online (Sandbox Code Playgroud)

df:

    item_no time
0   11      1
1   4       2
2   4       3
3   4       4
4   7       5
5   8       6
6   7       7
7   11      8
8   11      9
9   5       10
10  5       11
11  6       12
12  4       13
Run Code Online (Sandbox Code Playgroud)

它按time列排序(将其想象为时间序列)。我需要删除 …

python python-3.x pandas

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