0

我不确定 SO 是否适合问这个问题,如果不是,我会删除这个问题并在其他地方尝试。说我正在尝试执行以下操作:

在此处输入图像描述

我有一个List<double>并且想要将其值非常接近(在本例中为 0.75)的值替换为单个值,表示替换值的平均值。不应修改孤立或单独的值。替换的块也不能超过 5。

从 0、5、10.. 计算每个区间的平均值不会提供预期的结果。

LINQ 的强大功能多次让我感到惊讶,如果有人能指导我创建这个小方法,我会很高兴。

我的想法是首先找到每个最接近的值,计算距离,如果距离小于最小值(在本例中为 0.75),然后将这些值分配给同一个块。

当所有值都分配给它们的块时,运行第二个循环,将每个块(用一个值或多个值)替换为其平均值。

我在这种方法中遇到的问题是分配“块”:如果几个值在一起,我需要检查评估值是否包含在另一个块中,如果是,新值也应该在那个块中. 我不知道这是否是正确的做法,或者我把它复杂化了。

编辑:预期结果: 在此处输入图像描述

虽然您看到两个轴只使用了一个,但列表是一维的,我应该只绘制 X 轴。

所表示的线条的长度无关紧要。它只是在值所在的轴上标记。

4

1 回答 1

0

事实证明,MSDN 已经做到了这一点,并提供了一个带有代码的深入示例应用程序:

数据聚类 - 使用 k-Means 聚类检测异常数据

于 2013-08-27T16:50:57.443 回答