2017-08-16 12 views
1

例如,我們要計算列表過長的數字列表的平均值。而且排序時的數字幾乎是線性的(或者我們可以找到數據的線性迴歸模型)。在數學上,我們可以通過是否存在一種惰性評估形式,其中函數(如平均值)在對數組進行操作時返回近似值

((arr[0] + arr[length(arr)])/2) + intercept 

或者在殼體聚集平均,線性模型幾乎是恆定的(斜率係數接近1)。我們可以計算約爲:

mean(arr[n/const]) = mean(arr) 

同樣的概念適用於這兩種情況。而且非常基礎。 有沒有一種方法:模式,函數(希望在Python中),或任何研究建議,並可以提供幫助將受到歡迎;當然這種模式如果存在的話應該是一般的,而不僅僅是平均情況(可能是任何函數 或者至少是聚合函數,如sum,mean ......)。 (因爲我沒有很強的數學背景,而且我是機器學習的新手,請容忍我的無知)。 如果有什麼不清楚的話,請讓我知道。

+3

這與機器學習有什麼關係? –

+0

我認爲我的簡單解決方案:從一部分數據中獲得線性模型以便對其餘部分的未來視圖進行預測?但這就是我認爲的解決方案,如果線性模型幾乎不變,那麼我並不侷限於 –

+0

,斜率幾乎是** 0。 – C8H10N4O2

回答

4

Law of Large Numbers指出,由於樣本量的增加,觀察樣品的平均收斂到真正的總體平均概率爲1

因此,如果你的假設數組太大,平均而言,你可以在至少取大樣本的平均值,並知道你接近真實的人口平均數。

您可以使用numpy.random.choice(arr,n)其中arr是你的陣列,並根據需要(或可以)品嚐n是因爲許多元素numpy陣列採樣。

+0

我認爲我會堅持這一點,我認爲採樣是唯一的解決方案,我一直在轉身,沒有理由:o –

+0

@Curcuma_如果你的陣列適合內存(採樣需要這樣),那麼肯定它不是太大的來計算平均值? –

2

對於諸如Dask包這樣的作業,還有更多的通用解決方案,例如:http://dask.pydata.org/en/latest/ 它可以優化計算圖,並行化計算等等。

+0

Dask似乎是我的味道,我從來沒有聽說過! –

相關問題