求助 資料處理問題

2022-02-12 13:23:47 字數 2110 閱讀 3237

背景與資料細節這裡先略過(考慮到公司資料的保密性與表達的無必要性)。

遇到的問題可以簡單地歸結到兩個公式上面:

1、k0 = a1*px

2、kt 

= it

+(1-j

t)*k

t-1公式中變數及要求說明:

1、目前收集的資料是從2023年到2023年,計算時需要選定某一年為基年,然後以該基年的資料為起點開始往下計算某些屬性值。如基年選定1978,則以2023年的資料為起點,一直計算到2012,同理,若基年為1995,則以2023年的資料為起點,一直計算到2012。

2、上面提到以基年為起點能算到一些屬性值,如a, i,易知這兩個屬性變數均為向量,元素個數為最新資料年份-基年+1,如基年為1995,則個數為2012-1995+1 = 18,it表示第t年的i值,t範圍[1,18]。但還有些屬性值需要通過兩個不定因素的迭代計算得到,如k:k0和a

1,p有關,這裡的p為第乙個不定因素,變化範圍[4.0,5.5],亦是迭代的第一層。

寫過**的朋友都清楚,這一層迭代只要乙個for迴圈即可完成,這裡給出matlab**,基年假定為1995。

1

for px = 4.0:0.1:5.5

2 k(1,1) = a(1,1)*px; % matlab中(i,j)表示取矩陣或向量的第i行,第j列元素,這裡的變數均為列向量

3for t = 2:18 % 後面年份k值的計算

4 k(t,1) = i(t,1)+(1-j(t,1))*k(t-1,1

);end

5 end

若在px這個迭代過程中加入最優解評判標準,則可知對於某乙個基年,px最優取值只有乙個(假定評判時沒有相同的最優結果),也可以說px引數只針對基年,和後面年份無直接關係。如1995對應4.5,1998對應4.7,這個沒有什麼難處,也很好理解。

問題就在於第二個不定因素:j。在計算最優解過程中,j引數和基年無關,但和後面年份相關且每年對應的j值均在範圍[0.1,0.23]。

說到這,本人的本能反應是在第一層迭代中加入j的多層迭代,如基年為2010,則還需加入2011,2012這兩年的j值迭代過程。**如下:

for px = 4.0:0.1:5.5

k(1,1) = a(1,1)*px; %matlab中(i,j)表示取矩陣或向量的第i行,第j列元素,這裡的變數均為列向量

for j1 = 0.1:0.001:0.23

for j2 = 0.1:0.001:0.23

j = [1,j1,j2]'

; % 符號'表示行向量轉為列向量,第乙個元素無效,只做佔位用,因為需從基年的下一年開始計算

for t = 2:3 %後面年份k值的計算

k(t,

1) = i(t,1)+(1-j(t,1))*k(t-1,1

); %最優解評判過程在此處

endend

endend

表面上看,問題解決了,至少在不管最優解能否滿足實際需求的前提下。但是仔細一想,忽略了至關重要的一點——最新年份與基年的變動性。看下面列出的幾種可能的情況就能知道問題所在:

1、上述**中的例子,基年為2010,最新年份為2012,則迭代巢狀為兩層;

2、最初提到的基年為1978,最新年份為2012,需35層;

3、後面提到的基年1995,最新年份為2012,需18層;

4、使用者提供的資料也許最新年份為2013或2014等,同樣,基年選擇1999或2005等;面對這種最新年份與基年都不確定的情況,不定因素j的迭代過程該如何實現?

本人的能力確實想不出好的方法,目前能做到的只是能確定迭代的次數,如最新年份為2015,基年選取為2000,則迭代巢狀為2015-2000 = 15層。

提醒一點,確定了層數之後不管其大小如何,是可以實現,如30層就寫30個for迴圈。隨著最新年份與基年的變動,層數也跟著變,但是怎麼讓實現過程也相應地等價層數呢?

換句話說,上面的疑問即是:

1、若層數為2,則為兩個for迴圈;

2、若層數為10,則對應十個for迴圈;

3、但是資料的最新年份由統計時間或要求決定,基年選擇也不能事先確定,怎麼做到:根據使用者的資料與基年的選擇情況,實現相應的j迭代?

海量資料處理問題

一 給乙個超過100g大小的log file,log中存著ip位址,設計演算法找到出現次數最多的ip位址?該題目要求的是出現次數最多的乙個,有時候題目也會變成求出現次數排名前k的ip位址,兩個問題的解題思路是一致的,只是求前k個會多乙個小步驟,就是建堆,所以現在學習一下,求前k個的思路。100g記憶...

大量資料處理問題

1.根據快速排序劃分的思想 1 遞迴對所有資料分成 a,b b b,d 兩個區間,b,d 區間內的數都是大於 a,b 區間內的數 2 對 b,d 重複 1 操作,直到最右邊的區間個數小於100個。注意 a,b 區間不用劃分 3 返回上乙個區間,並返回此區間的數字數目。接著方法仍然是對上一區間的左邊進...

海量資料處理問題

1 給乙個超過100g大小的log le,log中存著ip位址,設計演算法找到出現次數最多的ip位址。如何找到top k的ip 這樣的問題如果出現在資料量較小的情形下,用乙個map或者unordered map都能很快的處理,但是100g這樣的量級放在乙個map裡是絕對不可行的。因此,我們採用雜湊切...