查询 IEnumerable 以获取具有相似属性并在特定时间阈值内的对象

我有一个 IEnumerable,其中包含用于表示用户操作的对象。 最终目标是显示系统中最近执行的操作的列表。 此列表可能会变得很长,用户要求列表的时间范围为 24 小时。 我想对此列表执行一些“压缩”,有点像 Facebook 对点赞和评论所做的那样。 例如,与其列出特定用户执行的所有 37 个更新,不如列出用户@用户名 更新了 37 个 y。

这些对象具有用户名和操作执行时间的属性,因此可以很容易地选择这些信息。 我需要一些帮助,以确定以编程方式确定应该压缩的内容的最佳方法。 理想情况下,我想例如,如果 1000 多个用户在 10 分钟内由同一用户更新,则它是导入而不是手动编辑,我将从操作列表中删除这些操作,并将其替换为“某某运行了导入”

如何查询 IEnumerable 以获取具有相同用户名并在特定日期范围内的对象?

编辑:我最初能想到的唯一方法是为每个可能的用户和每个可能的 10 分钟时间段迭代 Enumerable。 但这听起来效率极低,而且我显然不了解可用的选项。


回答:

事实证明,我解决这个问题的方法是不正确的。 在尝试使用 LINQ 以不同的方式查询数据集后,我意识到这是一个 AI 问题。 我试图在每个用户和时间的基础上识别大型数据集中的数据组。

这是一个聚类问题。 我编写并发布了一个库,用于对 IEnumerable 中的对象执行 K 均值聚类。 该过程如下所示:

var clusters = SharpLearning.Clustering.KCluster(k, iterations, listOfIClusterableObjects);foreach (var cluster in clusters) {    // 处理一些数据。    // clusters 是一个 List<Cluster<T>>,您可以在 .Members 属性中查看您的对象}

包含两个距离算法的 Cluster 类、IClusterable 接口和 KCluster 算法都包含在 C# 机器学习库

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注