1. 程式人生 > >少女Q的量化交易轉型之路 #week 1 之三

少女Q的量化交易轉型之路 #week 1 之三

continued…

第四章 棧與佇列

4.1 棧的定義

很多電腦軟體,比如word, phtoshop, 都有撤銷操作,其實都是棧的方式來實現的。

棧(stack)是限定僅在表尾進行插入和刪除操作的線性表。允許插入和刪除的一段稱為棧定(top),另一段稱為棧底(bottom),不含任何資料元素的棧稱為空棧。棧又稱為後進先出(last in first out)的線性表,簡稱LIFO結構。

棧首先是個線性表,是具有線性關係的,但僅僅在表尾進行插入和刪除操作。

4.2 棧的抽象物件

插入:push 刪除:pop 在這裡插入圖片描述

4.3 棧的順序儲存結構及實現

4.3.1 棧的順序儲存結構

定義一個top變數來指示棧頂元素在陣列中的位置,意味著棧頂的top可以變大變小,但必須小於stacksize.當棧只有一個元素時top為0.找空棧條件為top=-1。

4.3.2 棧的順序儲存結構

進棧操作:

//插入元素e為新的棧頂元素//
Status Push(aqStack *S, SElemType e)
{ 			 
 	if (S->top == MAXSIZE - 1) 	 //棧滿 
 	{
		return ERROR;
	}
S->top++; 						 //棧頂指標加一
 S->data[S->top] = e;			//將新插入的元素複製給棧頂空間
  return OK;
}

出棧操作:

/*若棧不空,則刪除S的棧頂元素,用e返回其值,並返回OK;否則返回ERROR*/
Status Pop(SqStack *S, SElemType *
e) { if(S->top == -1) return ERROR; *e=S->data[S->top]; /*將要刪除的棧頂元素賦值給e*/ S->top--; /*棧頂指標減一*/ return OK; }

4.4 兩棧共享空間

有兩個相同型別的棧,為他們各自開闢了陣列空間,極有可能第一個棧已經滿了,再進棧就移除了,而另一個棧還有很多的儲存空間。所以完全可以用一個數組來儲存兩個棧。 讓一個棧的棧底為陣列的始端,另一個棧棧底在陣列長度n-1處,兩個棧相對著。極端的情況:若棧2空棧,棧1的top1等於n-1,滿了。棧1為空,top2等於0,棧2滿。若兩個棧相遇,top+1 == top2為棧滿。 在這裡插入圖片描述

Push:除了要插入元素值引數,還要一個判斷棧1還是棧2的棧號引數Stacknumber。 在這裡插入圖片描述 Pop刪除: 在這裡插入圖片描述 事實上,使用這樣的資料結構,一般都是兩個棧的空間需求有相反關係時,也就是一個戰場增長時另一個棧在縮短。就像買賣股票,你買入,一定有人賣出。

4.5 棧的鏈式儲存結構及實現

4.5.1 棧的鏈式儲存結構

鏈棧,只是在棧定來做插入和刪除操作,單鏈表有頭之爭,而棧頂指標也是必須的,就讓他們合二為一,比較好的辦法是把棧頂放在單鏈表的頭部。這樣頭結點也失去了意義,通常對於鏈棧,不需要頭結點。對於鏈棧來說,基本不存在棧滿情況,除非記憶體炸了 在這裡插入圖片描述

4.5.2 進棧出棧

進棧操作push 假設元素為e的新結點是s,top為棧頂指標。 在這裡插入圖片描述 出棧操作pop: 三句話,假設變數p用來儲存要刪除的給定結點,將棧頂指標下移一位,最後釋放p。 在這裡插入圖片描述 在這裡插入圖片描述 順序棧,鏈棧:時間複雜度一樣o(1)。 但是空間性,順序棧要事前確定長度,可能會浪費記憶體,鏈棧每個元素都有指標域,也浪費。如果使用過程中,元素變化不可預料,用鏈棧。反之,順序鏈。

4.6 棧的應用

字尾(逆波蘭)表示法:非常有意思 9+(3-1)x3+10/2 對於高階語言可以直接輸入,因為已經將所有運算處理打包好,但是直接輸入邏輯塊裡面是不被認識的。 931-3*+10 2/+ 這樣的式子稱為字尾表示式,所有的符號都是在要運算的符號後面出現,用棧解決美滋滋。 在這裡插入圖片描述 在這裡插入圖片描述

4.7 佇列的定義

用電腦時候,有時候會宕機,然後突然把剛才點選的操作全部做了一遍。這是因為作業系統中的多個程式因需要一個通道輸出,而按先後次序排隊造成的。 佇列(Queue)是隻允許在一段進行操作,另一段進行刪除操作的線性表。佇列是一種先進先出(First In First Out)的線性表,簡稱fifo。允許插入的一段稱為隊尾,允許刪除的一段稱為隊頭。假設佇列是q=(a1,a2,……,an),那麼a1就是隊頭元素,an是隊尾元素。

4.7.1 迴圈佇列

線性表有順序儲存和鏈式儲存,棧是線性表,所以有兩種儲存方式。同樣佇列也是一種特殊的線性表。 佇列順序儲存的不足

  1. 順序結構儲存時,入列時直接插入隊尾,時間複雜度為o(1),沒什麼問題。出列時,隊頭的元素被刪除然後全體都要往前移動,時間複雜度為O(n). 在這裡插入圖片描述
  2. 進行改正,隊頭出列時,整個隊伍不動,隊頭的指標進行改變。但是問題是,陣列長度有限,總有情況會裝不下。溢位情況。

4.7.2 迴圈佇列的需要

解決溢位情況辦法就是,後面滿了,就從頭再來,頭尾相接。 在這裡插入圖片描述 新的問題:前面分析道當Front = Rear適合,佇列為空,現在佇列滿了(首尾相接)也是Front = Rear,怎麼辦? 辦法1:設定一個Flag 辦法2: 當佇列滿了,修改其條件,保留一個空間元素即可。由於Rear比Front大,也可能比Front小。若佇列的最大尺寸為queuesize,那麼佇列滿的條件是(rear + 1) % Queuesize == Front

4.8 佇列的鏈式儲存結構以及實現

佇列的鏈式結構就是線性表的單鏈表,只不過尾進頭出,簡稱為鏈佇列。將隊頭指標指向鏈佇列的頭結點,隊尾指標指向終端結點。

空佇列時,Front和Rear都指向頭結點。 入隊出列操作和前面差不多,略過。 在這裡插入圖片描述

Statistics Part!!! 前三章內容比較通識,講述的是一些統計實驗方法,就不贅述。

Statistics

第四章 資料的概括性度量

資料分佈的特鎮從三個方面進行測度描述:

  1. 分佈的集中趨勢,反映各資料向其中心值靠攏或聚集的程度
  2. 分佈的離散程度,反映各資料遠離其中心值的趨勢。
  3. 分佈的形狀,反映資料分佈的偏態和峰態。

4.1 集中趨勢的度量

集中趨勢是指一組資料向某一中心值靠攏的程度,反映一組資料中心點位置。

4.1.1 分類資料:眾數

眾數(mode)是一株資料中出現次數最多的變數值,用MοM\omicron表示。眾數主要用於測度分類資料的集中趨勢,也適用於作為順序資料以及數值型資料集中趨勢的測度值。一般情況下,在資料量較大情況下,眾數才有意義。

4.1.2 順序資料:中位數和分位數

一組資料中,可以找出某個位置上的資料。

  1. 中位數 中位數(median)是一組資料排序後處於中間位置上的變數值,用MeMe來表示。中位數主要用於測度順序資料的集中趨勢,但不適用於分類資料。
  2. 四分位數 四分位數(quartile)也稱為四分位點,它是一組資料排序後處於25%和75%位置上的值。

4.1.3 數值型資料:平均數

均值(mean),它是一組資料相加後除以資料個數得到的結果。是集中趨勢的最主要測度值,主要適用於數值型資料,不適合分類資料和順序資料。

  1. 幾何平均數(集中趨勢):是n個變數值乘積的n次方根,用G表示為L: G=x1×x2×x3...×xnn=i=1NxinG = \sqrt[n]{x1\times x2\times x3...\times xn}=\sqrt[n]{\prod_{i=1}^N x_i} 主要是適用於特殊資料的一種平均數,用於計算平均比率。當所掌握的變數值 本身是比率的形式時,採用幾何平均法計算平均比率更為合理。在實際應用中,主要用於計算現象的平均增長率。 (股票每年都有收益率,計算4年內平均收益率)

4.2 離散程度的度量

資料的離散程度是資料分佈的另一個重要特徵,它反映的是各個變數遠離中心值的程度。資料的離散程度越大,集中趨勢的測量值對該組資料的代表性就越差;離散程度越小,其代表性越好。

4.2.1 分類資料:異眾比率

異眾比率(variation ratio):指非眾陣列的頻數(出現的次數)佔總頻數的比例,用VrVr表示。 Vr=fifmfi=1fmfiV_r=\frac{\sum f_i - f_m}{\sum f_i }=1- \frac{f_m}{\sum f_i} 式中,fi\sum f_i為變數值的總頻數,fmf_m為眾陣列的頻數。

異眾比率主要用於衡量眾數對一組資料的代表程度。異眾比率越大,說明非眾陣列的頻數佔總頻數的比重越大,眾數的代表性越差。異眾比率越小,說明非眾數的頻數佔總頻數比重越小,眾數代表性越好。異眾比率主要適合測量分類資料的離散程度。

4.2.2 順序資料:四分位差

四分位差(quartile deviation: 也稱為內距或四分間距(inter-quartile range),它是上四分位與下四分位數之差,用QdQ_d表示。 計算公式為:Qd=QUQLQ_d =Q_U-Q_L 四分位數反映了中間百分之五十資料的離散程度,其數值越小,說明中間的資料越集中;資料越大,說明中間資料越分散。不受極值影響。

4.2.3 數值型資料:方差和標準差

測量數值型資料離散程度主要有極差,平均差,方差和標準差。

  1. 極差(range):一組資料最大值與最小值之差,也稱為全距, RR表示。

  2. 平均差 (mean deviation)也稱為平均絕對離差(mean absolute deviation),是各變數與其平均數離差絕對值的平均數,用MdM_d表示。 在這裡插入圖片描述 在這裡插入圖片描述 平均差以平均數為中心,反映了每個資料與平均數的平均差以程度,它能全面準確地反映一組資料的離散狀況。但是因為要保證離差為正取了絕對值所以不方便。

  3. 方差和標準差 方差(variance):是各變數值與其平均數離差平方的平均數。方差的平方根稱為標準差(standard deviation)。方差可以很好的反映資料的離散程度。 在這裡插入圖片描述 在這裡插入圖片描述 樣本方差的公式如上,用樣本資料減1稱為自由度(degree of freedom)。全體方差的話就是正常的。 方差開方後得到標準差,是有量綱的。

  4. 相對位置的度量 有了平均數和標準差之後,可以計算一組資料中各個數值的標準分數,以測度每個資料在該組資料中的相對位置,並且可以判斷一組資料時候有離群資料。 (1)標準分數 變數值與其平均數的離差除以標準差後的值稱為標準分數(Standard score) ,也稱為標準化或ZZ分數。 Zi=xixˉsZ_i=\frac {x_i - \bar{x}}{s} 標準分數給出了一組資料中各數值的相對位置。 Eg.某數值標準分數為-1.5,就知道該數值低於平均數1.5倍標準差。事實上,zz分數只是將原始資料進行了線性變換,並沒有改變一個數據在這組資料中的位置。

4.2.4 相對離散程度:離散係數

離散係數也稱為變異係數(Coefficient Of Variation),它是一組資料的標準差與其相應的平均數值之比。

計算公式為: vi=sxˉv_i=\frac{s}{\bar{x}}

離散係數是測量資料離散程度的相對統計量,主要用於比較不同樣本資料的離散程度。離散係數越大,資料的離散程度也越大;離散係數越小,說明資料的離散程度也小。 例題: 在這裡插入圖片描述

4.3 偏態與峰態的度量

4.3.1 偏態及其測度

偏態(skewness),它是對分佈對稱性的測度。測度偏態統計量是偏態係數。(coefficient of skewness),記作SKSK。 偏態係數的計算方法有很多。再根據未分組的原始資料計算偏態係數時,通常用以下公式: SK=n(xixˉ)3(n1)(n2)s3SK=\frac{n\sum{(x_i-\bar x)^3}}{(n-1)(n-2)s^3}

若一組資料分佈是對稱的, 偏態係數等於0; 係數>1或<-1,稱為高偏態分佈; 係數在0.51或-1-0.5,稱為中等偏態分佈;

如果是分組資料計算偏態係數,可採用以下公式: 在這裡插入圖片描述 可以看出是離差的三次方的平均數再除以標準差的三次方。 分佈對稱時,離差三次方後正負離差可以相互抵消,SKSK分子為0。 SKSK>0,正離差值較大,判斷為正偏或者右偏,數值越大表示傾斜程度。

4.3.2 峰態及其測度

峰態(kurtosis): 是對資料分佈平峰或尖峰程度的測量。測度峰態的統計量是峰態係數(coefficient of kurtosis), 記作KK. K=i=1k(Mixˉ)fins43K=\frac{\sum{i=1}^k (M_i-\bar x) f_i}{ns^4}-3

KK>0為尖鋒分,資料分佈更集中;KK<0時為扁平分佈,資料分佈越散。公式也可以不-3。 在這裡插入圖片描述

第五章 概率與概率分佈

前一章節主要是對停機資料的整理和描述,對一些客觀事物的概貌有一些瞭解。然而,簡單的描述方法只能實現對統計資料粗淺的利用,它與統計資料中挖掘出的規律性東西相去甚遠。需要用推斷統計的方法,在蒐集,整理觀測樣本資料基礎上,對有關總體做出推斷。

5.1 隨機事件的幾個基本概念

同一組條件下, 對某事物或者現象所進行的觀察叫做實驗, 把觀察或者實驗的結果叫做事件。 Eg. 擲骰子實驗中, 投到1, 2, 3/奇數點/偶數點都是一個事件, 當事件不能再分解為兩個或者更多, 稱為基本事件(elementary event).

  1. 隨機事件(random event): 同一組條件下, 每次事件可能出現也可能不出現。
  2. 必然事件(certain event):同一組條件下, 每次實驗一定出現。
  3. 不可能事件(impossible event):同條,一定不出現。 隨機事件用大寫字母ABC表示;必然事件用Ω來表示,不可能事件用∅表示。

5.1.1 事件的概率

事件A的概率是描述事件A在實驗中出現的可能性大小的一種度量, 即事件A出現可能性大小的數值P(A), 稱為事件A的概率。

  1. 古典定義:求一個隨機事件發生的可能性的大小:(1)結果有限,即基本空間只含有限個元素2)各個結果出現的可能性被認為是相同的。 P(A)=A=mnP(A)=\frac{事件A所包含的基本事件個數}{樣本空間所包含的基本事件個數}=\frac{m}{n} 因為其侷限在隨機試驗只有有限個個數,使應用受到了很大限制。因此,又提出了一個根據某一事件在重複實驗中發生的頻率來確定概率的方法,概率的統計定義。(一天發生好幾次,和一天發生一次算了一個月的區別)

  2. 統計定義: 在相同條件下隨機試驗n次,某事件A出現m次(m<=n),則幣值m/n稱為事件發生的頻率。隨著n的增大,該頻率圍繞某一常數p上下波動,且波動的幅度逐漸減小,趨於穩定,這個穩定值即為事件的概率:在相同條件下隨機試驗n次,某事件A出現m次(m<=n),則幣值m/n稱為事件發生的頻率。隨著n的增大,該頻率圍繞某一常數p上下波動,且波動的幅度逐漸減小,趨於穩定,這個穩定值即為事件的概率: P(A)=mn=pP(A)=\frac{m}{n}=p

  3. 主觀概率定義 概率的統計定義也有很多侷限性。在實際應用中要求在相同條件下進行大量重複實驗。主觀概率:指對一些無法重複的實驗,根據以往經驗,人未確定事件的概率。

5.2 條件概率與獨立事件

1.條件概率 當某一事件B已經發生時,事件A發生的概率,稱為這種概率為事件B發生條件下事件A發生的條件概率(conditional probability),記為P(A|B)。

2.乘法公式 條件概率P(AB)=P(AB)P(B)P(A|B)=\frac{P(AB)}{P(B)}, P(B)&gt;0P(B)&gt;0,此式對於任何古典概型都成立。 P(AB)=P(B)P(AB)P(AB)=P(B)P(A|B)

3.獨立性 當使用概率的乘法公式時,一般先要計算條件概率,但是在事件獨立的情況下,乘法公式就變得簡單了。

P(BA)=P(B)P(B|A)=P(B), P(AB)=P(A)P(A|B)=P(A)

P(AB)=P(A)P(B)P(AB)=P(A)P(B)

相關推薦

少女Q量化交易轉型 #week 1

continued… 第四章 棧與佇列 4.1 棧的定義 很多電腦軟體,比如word, phtoshop, 都有撤銷操作,其實都是棧的方式來實現的。 棧(stack)是限定僅在表尾進行插入和刪除操作的線性表。允許插入和刪除的一段稱為棧定(top),另一段稱為棧底

少女Q量化交易轉型 #week 2 1(Special Hurricane week + 1 python project)

週一上午還按部就班的上著課, 毫無預兆, 下午學校就給通知放假了。 去年來美帝第一個月,佛州就遭遇颶風‘emma‘?,由南向北,把底下的島國古巴,多明尼加掃了一通,從邁阿密登美,沿著佛州一路朝上。去年的標語是:‘‘史上最強颶風!!古巴被夷為平地!!邁阿密人民都慌

少女Q量化交易轉型 #week 2 二(計劃改動)

計劃改動: 對於資料結構part,不只能是光看書,速度太快容易underfitting,很多邏輯不實踐一下是理不清的,書上的內容結合leetcode的tag一起刷覺得效果會更好。準備從array開始到string開始做點題,tree部分題量很大,放在下週再看。

keras量化分析1)--獲取歷史交易資料

tushare提供方法,方便獲取某隻股票的歷史交易資料 方法名稱:get_hist_data 1。獲取某隻股票全部交易資料 import tushare as ts ts.get_hist_data('600848') #一次性獲取全部日k線資料

轉載--我的AI轉型與AI我見(非985211的奮鬥路程與視角)

前言 我是一名傳統網頁(PHP+ruby)和應用開發(Android)轉型AI相關開發的碼農。在非985211高校出身的情況下,我前期自己買書學習,到現在考研上課全身心的投入智慧系統的開發當中來,在演算法當中理解了資料和模型,對一些基本問題的解決和現在社會上的環境風氣有

我的AI轉型與AI我見(非985211的奮鬥路程與視角)

http://blog.csdn.net/sileixinhua/article/details/75203725 前言 我是一名傳統網頁(PHP+ruby)和應用開發(Android)轉型AI相關開發的碼農。在非985211高校出身的情況下,我前期自己買書學習

OpenCV學習——車牌識別車牌定位

pla sim srand oval 模糊 fault .html swa ide 去年七月份因為學校項目需要開始接觸圖像處理,但那時候只是到網上找車牌識別代碼,然後加入到自己的項目中,不清楚細節原理。 現在自己重新一步步實現車牌識別。 高斯模糊: 1 Mat Ga

vuex實踐——筆記本應用(

lang 們的 res tool method note 做到 筆記 not Actions Action 類似於 mutation,不同在於: Action 提交的是 mutation,而不是直接變更狀態。 Action 可以包含任意異步操作。 讓我們來註冊一個簡單的

Python學習——day 1

exc 默認 image java imp final python ret ber Python安裝   前往官網下載安裝包,選擇自己需要的Python版本。現在的Python早已進入3.x時代,最好選擇3.x的版本。2.x的版本已不在更新,且將在2020年停止服務。  

[4] 算法 - 插入排序Shell間隔與Sedgewick間隔

取出 然而 int edge lsh 分享 間隔 使用 des 題目 插入排序法由未排序的後半部前端取出一個值。插入已排序前半部的適當位置。概念簡單但速度不快。 排序要加快的基本原則之中的一個: 是讓後一次的排序進行時,盡量利用前一次排序後的結

小白成長:初識python() -----------python內置函數

urn locals for lte mod pre 最大 變量 ascii   剛才看了一下竟然還有人看我的博客^ - ^ 廢話不多說,上代碼,有不對的勿噴,畢竟我真的是小白 # python 內置函數整理# 返回一個數的絕對值# a = abs(-10)# print(

前端基於react,後端基於.net core2.0的開發1) 介紹

tco ioc logs asp webpack 路由 src 部署 關鍵字 文章提綱目錄 1.前端基於react,後端基於.net core2.0的開發之路(1) 介紹 2.前端基於react,後端基於.net core2.0的開發之路(2) 開發環境的配置,

FPGA小白學習1) System Verilog的概念以及與verilog的對比

函數返回 enable 傳遞 轉換操作符 st2 輸出 時間值 擴展 isa 轉自CSDN:http://blog.csdn.net/gtatcs/article/details/8970489 SystemVerilog語言簡介 SystemVerilog是一種硬件描

武道-煉體期重天

per inter card 同時 color sdi nio update 子集 集合(可變): 惟一,無序 ,set()轉成集合,去重。 setx=set([2,5,3,2]),sety=set((2,6,7,8)) 增:setx.add(),向其中加一個元素,setx

Python全棧——第1

-- 都是 tin pos 解釋型 error a long 反斜杠 約定   python作為一門解釋型的編程語言,和c/c++等其他語言都或多或少有相通的地方,所以有語言基礎的話,學起來還是方便一些。所以我的筆記對於相對簡單的概念可能會選擇放過,但對自己記錄的東西我會力

python學習-day4.1

函數(高階函數、嵌套函數、匿名函數) 裝飾器 生成器 裝飾器需要了解以下三點知識:1、函數即變量;2、高階函數;3、嵌套函數;所以首先先普及一下知識點:變量定義x = 1,數據1讀取到內存中,可以理解為存到一房間中,而x表示房間號;函數定義,函數體部分讀取到內存中,而函數名表示房間號;def te

《Python學習 -- Python基礎叠代器及for循環工作原理》

pre 循環 next 是我 我們 png 捕獲 模擬 檢查   提到叠代器不得不說叠代器協議,叠代器協議是指:對象必須提供一個__next__()方法,執行該方法要麽返回叠代中的下一項,要麽就拋出一個StopIteration異常(相當於報錯的意思)以終止叠代。然而遵循這

《Python學習 -- Python基礎裝飾器》

接收 學習之路 代碼 內部 AS OS 如果 col PE   裝飾器,本質上是一個函數,更加直觀的說,裝飾器就是等於 高階函數 + 函數嵌套 + 閉包 ,裝飾器是具有某個基礎功能的函數,這種功能可以加成到其他函數上,使得其他函數的功能更加強大。除此以外,裝飾器還有兩個重要

《Python學習 -- Python基礎切片》

nas col 結束 了解 默認值 對象 學習 好的 tuple   切片從字面上的意思也能很好的了解,就是將某個東西切成一個片段。也就是說,切片是一種對數據的操作,截取數據中的一個片段,字符串,列表和元組都支持切片。 # 語法: 操作對象[起始位置:結束位置:步長] #

PythonDAY.1

打印 入職 註冊 輸入 原因 for lse big 階段 Python之路DAY.1 第一階段大概學習了python的基礎,語法有while,if,for等,綜合知識,我結合程序編寫了以下內容,這是一個猜數遊戲,需要註冊登錄然後猜數。缺點本人技術原因,每次進行