c# - 寻找十进制数据的直方图分箱算法

标签 c# statistics histogram

为了计算直方图,我需要生成 bin。语言是 C#。基本上我需要接受一个十进制数数组并从中生成一个直方图。

一直无法找到一个像样的库来直接完成这项工作,所以现在我只是在寻找一个库或一种算法来帮助我对数据进行装箱。

所以...

  • 是否有任何 C# 库可以接收十进制数据数组并输出分箱直方图?
  • 是否有通用算法来构建用于生成直方图的 bin?

最佳答案

这是我使用的一个简单的桶函数。遗憾的是,.NET 泛型不支持数字类型约束,因此您必须为 decimal、int、double 等实现以下函数的不同版本。

public static List<int> Bucketize(this IEnumerable<decimal> source, int totalBuckets)
{
    var min = source.Min();
    var max = source.Max();
    var buckets = new List<int>();

    var bucketSize = (max - min) / totalBuckets;
    foreach (var value in source)
    {
        int bucketIndex = 0;
        if (bucketSize > 0.0)
        {
            bucketIndex = (int)((value - min) / bucketSize);
            if (bucketIndex == totalBuckets)
            {
                bucketIndex--;
            }
        }
        buckets[bucketIndex]++;
    }
    return buckets;
}

关于c# - 寻找十进制数据的直方图分箱算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387916/

相关文章:

c# - C# 将数据保存到文件中

c# - 如何在 C# 中将 TreeView 项显示为 ListView 项

matplotlib - Python 不断覆盖先前情节的 hist 但不使用所需的情节保存它

r - 如何通过分类变量过滤 R 中的 data.frame?

database - 检测稀疏分布中的异常值?

r - 强制R将直方图绘制为概率(相对频率)

matlab - 如何在 matlab 中使用直方图处理程序

c# - ServiceStack 在没有 MVC 的情况下开启 Razor 智能感知支持

c# - 如何编写 C# 5 异步?

r - 如何在R代码中使用离群值测试