开源Math.NET基础数学类库使用总目录:【目录】开源Math.NET基础数学类库使用总目录
前言
数据集的基本统计计算是应用数学,以及统计应用中最常用的功能。如计算数据集的均值,方差,标准差,最大值,最小值,熵等等。Math.NET中的MathNet.Numerics.Statistics命名空间就包括了大量的这些统计计算的函数。今天就为大家介绍这方面的内容。这样就可以使用C#进行数据集合的相关统计计算,以前在matlab中一个函数可以解决的问题,在C#里面也可以一个函数解决。所以Math.NET很大程度上替代了Matlab的基础数据计算功能,当然是不能和Matlab媲美的。
如果本文资源或者显示有问题,请参考 本文原文地址:http://www.cnblogs.com/asxinyu/p/4301252.html
1.Math.NET的统计函数类
Math.NET在MathNet.Numerics.Statistics命名空间中的基本数据统计类及作用介绍如下,静态类中的方法基本上都可以直接作为扩展方法使用:
1.Statistics类,基础的数据集统计,如最小值,最大值,平均值,总体方差,标准差等等。为静态类,注意Statistics是一个总体的统计类,其很多函数的调用都是根据数据集的类型分开调用StreamingStatistics和ArrayStatistics;
2.StreamingStatistics,静态类,是流数据集的统计,适合于一些大数据集,不能一次性读入内存的情况;
3.ArrayStatistics,静态类,是普通的未排序数组数据集的统计,一次性都加载在内存,因此计算比较方便;
4.SortedArrayStatistics,静态类,是排序数组数据集的统计;
5.DescriptiveStatistics,非静态类,与Statistics类的功能类似,但不一样的是Statistics是静态方法,一一计算,而该类是初始化的时候,可以一次性计算所有的指标,直接通过属性进行获取。
6.RunningStatistics,非静态类,和Statistics类功能差不多,但允许动态更新数据,进行再次计算;
2.统计函数类的实现
上述有多个统计类,但核心的代码不多。上述多个实现,也只是为了满足多种不同的需求。我们一起看一个基本实现:ArrayStatistics类,类的核心实现,代码过多,只列举了代码原型,和注释:
1 /// <summary> 2 /// 对未排序的数组进行统计操作 警告: Methods with the Inplace-suffix may modify the data array by reordering its entries. 3 /// </summary> 4 public static class ArrayStatistics 5 { 6 /// <summary>返回未排序数组的最小值,如果数据为空或者元素为NaN,则返回NaN.</summary> 7 /// <param name="data">简单的未排序数组.</param> 8 public static double Minimum(double[] data) 9 10 /// <summary>返回未排序数组的最小值,如果数据为空或者元素为NaN,则返回NaN.</summary> 11 /// <param name="data">简单的未排序数组.</param> 12 public static float Minimum(float[] data) ; 13 14 /// <summary>返回未排序数组的最大值,如果数据为空或者元素为NaN,则返回NaN.</summary> 15 /// <param name="data">简单的未排序数组.</param> 16 public static double Maximum(double[] data) ; 17 18 /// <summary>返回未排序数组的最大值,如果数据为空或者元素为NaN,则返回NaN.</summary> 19 /// <param name="data">简单的未排序数组.</param> 20 public static float Maximum(float[] data); 21 22 /// <summary>计算未排序数组的算术平均值,如果数据是空的或者元素为NaN</summary> 23 /// <param name="data">简单的未排序数组.</param> 24 public static double Mean(double[] data) ; 25 26 /// <summary> 27 /// 计算未排序数组的无偏总体方差:对大小为N的数据集,使用N-1进行标准化.