<b>閱讀目錄</b>
<a href="http://www.cnblogs.com/asxinyu/p/Dotnet_Opensource_MathNet_Basic_Statistics_10.html#_label0">前言</a>
<a href="http://www.cnblogs.com/asxinyu/p/Dotnet_Opensource_MathNet_Basic_Statistics_10.html#_label1">1.Math.NET的統計函數類</a>
<a href="http://www.cnblogs.com/asxinyu/p/Dotnet_Opensource_MathNet_Basic_Statistics_10.html#_label2">2.統計函數類的實作</a>
<a href="http://www.cnblogs.com/asxinyu/p/Dotnet_Opensource_MathNet_Basic_Statistics_10.html#_label3">3.統計函數使用的例子1</a>
<a href="http://www.cnblogs.com/asxinyu/p/Dotnet_Opensource_MathNet_Basic_Statistics_10.html#_label4">4.統計函數使用的例子2</a>
<a href="http://www.cnblogs.com/asxinyu/p/Dotnet_Opensource_MathNet_Basic_Statistics_10.html#_label5">5.資源</a>
資料集的基本統計計算是應用數學,以及統計應用中最常用的功能。如計算資料集的均值,方差,标準差,最大值,最小值,熵等等。Math.NET中的MathNet.Numerics.Statistics命名空間就包括了大量的這些統計計算的函數。今天就為大家介紹這方面的内容。這樣就可以使用C#進行資料集合的相關統計計算,以前在matlab中一個函數可以解決的問題,在C#裡面也可以一個函數解決。是以Math.NET很大程度上替代了Matlab的基礎資料計算功能,當然是不能和Matlab媲美的。
Math.NET在MathNet.Numerics.Statistics命名空間中的基本資料統計類及作用介紹如下,靜态類中的方法基本上都可以直接作為擴充方法使用:
1.Statistics類,基礎的資料集統計,如最小值,最大值,平均值,總體方差,标準差等等。為靜态類,注意Statistics是一個總體的統計類,其很多函數的調用都是根據資料集的類型分開調用StreamingStatistics和ArrayStatistics; 2.StreamingStatistics,靜态類,是流資料集的統計,适合于一些大資料集,不能一次性讀入記憶體的情況; 3.ArrayStatistics,靜态類,是普通的未排序數組資料集的統計,一次性都加載在記憶體,是以計算比較友善; 4.SortedArrayStatistics,靜态類,是排序數組資料集的統計; 5.DescriptiveStatistics,非靜态類,與Statistics類的功能類似,但不一樣的是Statistics是靜态方法,一一計算,而該類是初始化的時候,可以一次性計算所有的名額,直接通過屬性進行擷取。 6.RunningStatistics,非靜态類,和Statistics類功能差不多,但允許動态更新資料,進行再次計算;
上述有多個統計類,但核心的代碼不多。上述多個實作,也隻是為了滿足多種不同的需求。我們一起看一個基本實作:ArrayStatistics類,類的核心實作,代碼過多,隻列舉了代碼原型,和注釋:


當然不是所有人都會用到這些函數,一般人可能隻會用到一些常用的,如均值,方差等等。詳細的使用,可以看下面的例子。
上面已經提到,對于靜态類中的方法,可以根據需要使用擴充方法,或者直接調用該函數進行計算相應的統計名額。這種事情是非常簡單的,看一個綜合的例子:


結果如下:


下面将介紹使用DescriptiveStatistics類直接進行所有名額計算的例子。
使用DescriptiveStatistics的方法也很簡單,直接使用資料數組進行初始化,然後根據屬性擷取對應的名額結果就可以了。如下代碼:




本文轉自資料之巅部落格園部落格,原文連結:http://www.cnblogs.com/asxinyu/p/Dotnet_Opensource_MathNet_Basic_Statistics_10.html,如需轉載請自行聯系原作者