資料集的基本統計計算是應用數學,以及統計應用中最常用的功能。如計算資料集的均值,方差,标準差,最大值,最小值,熵等等。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的方法也很簡單,直接使用資料數組進行初始化,然後根據屬性擷取對應的名額結果就可以了。如下代碼: