少女Q的量化交易转型之路 #week 2 之二(计划改动)
计划改动:
对于数据结构part,不只能是光看书,速度太快容易underfitting,很多逻辑不实践一下是理不清的,书上的内容结合leetcode的tag一起刷觉得效果会更好。准备从array开始到string开始做点题,tree部分题量很大,放在下周再看。
数学part暂时不变,脑子里有个概念就好。
理论是灰的,生命之树常青。
Leetcode Q13 Roman to Integer
string-easy
题目大意是将罗马数字转换为整数,范围在1~3999之间。具体规则题目写得很清楚,大部分情况小的符号一定是在大的符号后边的, 但是4,9,40,90,400,900除外。
个人思路:输入是一串string,将每一个string的字符都从左到右遍历一遍(从大到小),并转化成数字加起来。但是问题是有6种特殊情况,一开始并没想到怎么排除,看到别人java的简单暴力实现,就复制了一下思路。
代码实现:
class Solution:def romanToInt(self, s):""":type s: str:rtype: int"""num = 0T ={'I':1, 'V':5, 'X':10, 'L':50, 'C':100,'D':500, 'M':1000}for i in range(0, len(s)):# 遍历并简单加和。num = num + T.get(s[i])# 六种特殊情况,if 'IV' in s:num -= 2if 'IX' in s:num -= 2if 'XL' in s:num -= 20if 'XC' in s:num -= 20if 'CD' in s:num -= 200if 'CM' in s:num -= 200return num
遇到的问题:
string的一些常用方法。
1.字符串string是python中最常用的数据类型,一般用引号’‘或者““来创建字符。例如: var1 = "hello yueqi"字符串string是python中最常用的数据类型,一般用引号’'或者““来创建字符。例如: var1 = “hello yueqi”。
2.python访问字符串中值时候,是从0开始的,最后一位不算进去。要用for in range 遍历的时候,需要注意。python中关于string的查找:
1.name.count(‘x’)查找某个字符在字符串里面出现的次数
2.name.find(‘x’)找到这个字符并返回下标,多个时候返回第一个;不存在的字符返回-1。
3.name.index(‘x’)找到字符的返回下标,多个时候返回第一个;不存在时候报错。
4.in就是我在例程中用的,不返回任何值,只是一个操作符。在这题里非常适用,因为不需要任何返回值,只需要判断true和false。字典Dictionary的用法
1.查找表非常方便,很适合一对一的形式。{‘Yueqi’: 95, ‘qiyue’:85, ‘qiqi’:75}, ''里面的值是key, 后面的对应value。
2.dict.get(key) 或者 dict[key] 都可以找到value
别人的方法:
要善于总结规律,无论是不是特殊情况,发现最后一位,总是要加上的。也就是说,题目只分成两种情况:1. 遍历到len(s)-1,除去最后一位,当左边大于右边时候,直接加上。2. 当左边小于右边时,减去左边的值。这样这道题目只需要用if, else就好了。能这样做的原因,是因为不像十进制,每一位上数字都是0~9, 罗马数字每一位上的都不一样的。
class Solution:def romanToInt(self, s):""":type s: str:rtype: int"""sum = 0roman = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}for i in range(0, len(s) - 1):if roman.get(s[i]) < roman.get(s[i+1]):sum = sum - roman.get(s[i])else:sum = sum + roman.get(s[i])z = roman.get(s[-1])return sum + z
数据结构
第五章 串
串(String)是由零个或者多个字符组成的有限序列,又名叫字符串。
一般记为s=”a1a2….an”(n>=0),s是串的名称,用的双引号括起来的字符序列是串的值。ai(1<=i<=n)可以是字母,数字或者其他字符,i就是该字符在串的位置。串中的字符数目n称为串长度。零个字符的串称为空串(null string),长度为0.
5.1串的比较
给定俩串: s=”a1a2….an”, t=”b1b2….bm”,当满足下列条件之一,s<t。
- n<m且ai=bi(i-1,2,…,n)
- 存在某个k<=min(m,n),使得ai=bi(i-1,2,…,k-1),ak<bk
5.2 串的抽象数据类型
串的逻辑结构和线性表很像,但是串针对的是字符集,也就是串中元素都是字符。
对于串基本操作与线性表有很大差别。线性表更关注单个元素的操作,比如查找插入删除一个元素,串更多的是查找子串的位置,得到指定位置子串,替换子串等。来一个操作index的算法(找目录的):
5.3 串的存储结构
5.3.1 串的顺序存储结构
是用一组地址连续的存储单位来存储串中的字符序列的。按照预定义大小,为每个定义的串变量分配一个固定长度的存储区。一般用定长数组来定义的。
一般将实际的串长度值保存在数组的0下标位置,有时也会定义在数组的最后一个下标,还有些觉得填数字麻烦,规定在串值后面加一个不计入串长度的结束标记字符,”\0”来表示串值的终结。
但其实这样,也是有很多局限的,两串连接,插入,替换等,都会超出Maxsize。比如一些老手机发短信时,超过一些字数就不能再打字了。
5.3.2 串的链式存储结构
与线性表是相似的,但是由于串结构的特殊性,结构中的每个元素数据都是一个字符,如果简单的应用链表存储串,一个结点对应一个字符,会浪费很大。因此一个结点可以存放一个字符,也可以存放多个,最后一个结点若是没被占满,可以用“#”或别的字符补全。
5.4 KMP模式匹配算法
朴素的模式匹配会进行重复的比较,挨个便利,效率极差。Kmp算法,可以节省运算时间和遍历次数。
举个例子:主串 S = “ a b c d e f g a b ” S= “abcdefgab” S=“abcdefgab”, 匹配的 T = ” a b c d e x ” T=”abcdex” T=”abcdex”
朴素算法:
- 前5个字母,两个串完全相等,直到第6个字母,"f"与"x"不等,才会往右挪动一格。
- 接下来的流程是图2 3 4 5 6。即主串 S S S中当i=2,3,4,5,6时,首字符与子串 T T T的首字符均不等。
但是,发现对于要匹配的子串t来说,“abcdex“首字母"a"与后面的串“bcdex“中任意一个字符都不相等。也就是说,既然"a"不与自己后面的子串中任何一个字符相等,对于图1来说,前五位相等必然意味着子串 T T T的首字符"a"必然不可能和 S S S串的第2到5位字符相等。所以图2 3 4 5判断都是多余的。
KMP模式匹配算法核心:
我们只保留了第一步和第六步,是因为 T [ 2 ] = S [ 2 ] , T [ 3 ] = S [ 3 ] , T [ 4 ] = S [ 4 ] , T [ 5 ] = S [ 5 ] T[2]=S[2], T[3]=S[3], T[4]=S[4], T[5]=S[5] T[2]=S[2],T[3]=S[3],T[4]=S[4],T[5]=S[5]。但我们并不能判断T[6]=S[6],所以需要再次判断。
如果T串后也含有首字符"a"的字符该怎么办?
例子2:假设 S = " a b c a b c a b c " , T = " a b c a b x " S="abcabcabc", T="abcabx" S="abcabcabc",T="abcabx"
- 经过前面的判断,前5个字符完全相等,第6个字符不等。上例是直接跳到 S [ 6 ] S[6] S[6]进行比较。但是此例 T [ 1 ] = T [ 4 ] T[1]=T[4] T[1]=T[4], 只能省下图2 3 。(因为不能判断T[4]后面是不是和S[4]后面一样)
- 因为T[1]的"a"与T[4]"a"相等,T[2]的"b"与T[5]"b"相等,且在第一步T[4],T[5]已经和S相应位置比较过了是相等的,所以图4 5 也可以省略了。
如图:
对比上述两个例子,发现在图1时,i值,也就是主串当前位置的下标为6,图2 3 4 5时,i=2,3,4,5。到了6时,i重回6。在朴素模式匹配算法中,主串i值是不断回溯完成的。
KMP模式匹配算法避免了这种不必要的回溯。既然i不可以变小,剩下要考虑的就是j值了。T串的首字符与自身后面字符的比较,发现如果有相等字符,j值变化就会不相同。eg1中,因为T="abcdex"当中没有任何重复的字符,所以j由6变成1。eg2中,因为T="abcabc"中"ab"有重合,因此j由6变成了3。
我们把T串各个位置的j值变化定义为一个数组next,那么next的长度就是T串的长度。于是可以得到下列函数定义:
next数组值推导案例:记住是从s第一位开始的数组进行比较
- 无重复的
- 有两个重复
- 很多个重复
统计
第六章 统计量及其抽样分布
6.1 统计量
6.1.1 统计量的概念
实际应用中,当从某总体中抽取一个样本 ( X 1 , X 2 , . . . , X n ) (X_1, X_2, ..., X_n) (X1,X2,...,Xn)后,并不能直接应用它去总体的有关性质和特征进行推断,这是因为样本虽然是从总体中获取的代表,含有总体性质的信息,但仍然是比较分散的。(grab需要的特征?)
为了使统计推断成为可能,首先必须把分散在样本中我们关心的信息收集起来,针对不同的研究目的,构造不同的样本函数。
定义: 设 X 1 , X 2 , . . . , X n X_1,X_2,... , X_n X1,X2,...,Xn是从总体 X X X中抽取的容量为n的一个样本, 如果由此样本构造一个函数 T ( X 1 , X 2 , . . . , X n ) T(X_1, X_2, ..., X_n) T(X1,X2,...,Xn), 不依赖于任何未知参数,则称函数 T ( X 1 , X 2 , . . . , X n ) T(X_1, X_2, ..., X_n) T(X1,X2,...,Xn)使一个统计量。
通常,又称 T ( X 1 , X 2 , . . . , X n ) T(X_1, X_2, ..., X_n) T(X1,X2,...,Xn)为样本统计量。当获得样本的一组具体观测值 x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1,x2,...,xn时,带入 T T T, 计算出 T ( x 1 , x 2 , . . . , x n T(x_1, x_2, ..., x_n T(x1,x2,...,xn的数值,就获得一个具体的统计量值。
统计量是样本的一个函数,可以有多个(E(X),D(x)不是,要依赖于总体分布的) 。由样本构造具体的统计量,实际上是对样本所含的总体信息按照某种加工要求进行加工处理,把分散在样本中额信息集中到统计量的取值上,不同的统计推断问题要求不同统计量。
6.1.2 常用统计量
6.1.3 次序统计量
设 X 1 , X 2 , . . . , X n X_1,X_2, ..., X_n X1,X2,...,Xn是从总体 X X X中抽取的一个样本, X i X_i Xi称为第i个
次序统计量,它是样本 ( X 1 , X 2 , . . . , X n ) (X_1,X_2, ..., X_n) (X1,X2,...,Xn)满足如下条件的函数:每当样本得到一组观测值(x_1,x_2, …, x_n)时,其由小到大的排序 x ( 1 ) ≤ x ( 2 ) . . . ≤ x ( i ) ≤ . . . ≤ x ( n ) x_{(1)}\leq x_{(2)}...\leq x_{(i)}\leq ... \leq x_{(n)} x(1)≤x(2)...≤x(i)≤...≤x(n)中,第i个值 x ( i ) x_{(i)} x(i)就作为次序统计量 X ( i ) X{(i)} X(i)的观测值,而 X ( 1 ) , X ( 2 ) , . . . , X ( n ) X_{(1)},X_{(2)}, ..., X{(n)} X(1),X(2),...,X(n)称为次序统计量。其中, X ( 1 ) X_{(1)} X(1)和 X ( 2 ) X_{(2)} X(2)分别为最小和最大次序统计量。
R ( n ) = X ( n ) − X ( 1 ) R_{(n)}=X_{(n)}-X_{(1)} R(n)=X(n)−X(1)称为样本极差。极差反映出样本中最大值与最小值的差距,但损失了样本的中间信息。
6.1.4 充分统计量
前面我们由样本构造了一个统计量,可以看出,样本统计量T的构造过程就是对样本根据要求进行加工的过程。我们希望在构造统计量的过程中尽可能保留样本中有关总体的信息。
在统计学中,介入一个统计量能把含在样本中有关总体的信息一点都不损失的提取出来,那对保证后边的统计推断质量具有重要意义。统计量加工过程中一点信息都不损失的统计量称为充分统计量。
### 6.2 关于分布的几个概念
6.2.1 抽样分布
在总体 X X X的分布型已知时,若对任一自然数n,都能推导出统计量 T = T ( X 1 , X 2 , . . . , X n ) T=T(X_1,X_2, ..., X_n) T=T(X1,X2,...,Xn)的分布的数学表达式,这种分布称为精确的抽样分布。它对样本量n较小的统计推断问题非常有用。
精确的抽样分布大多是在正态总体情况下得到的,在正态总体条件下,主要由 X 2 X^2 X2分布, t t t分布, F F F分布,常称为统计三大分布。
6.2.2 渐近分布
在统计学的抽样分布理论中,至今求出的精确抽样分布不多。通常,精确抽样不仅难获得,也过于复杂了。所以借助极限工具,寻求在样本量n无限大时,统计量 T ( X 1 , X 2 , . . . , X n ) T(X_1,X_2, ... , X_n) T(X1,X2,...,Xn)的极限分布,常称为渐近分布。
6.2.3 随机模拟获得的近似分布
实际应用中,很多问题要寻求精确分布和渐进分布都很难。可用计算机做一系列实验,每次实验都是从总体随机抽取容量为n的样本,然后计算统计量的值。当实验进行N次时,就得到了统计量T的N个观测值。
6.3 由正态分布导出的几个重要分布
6.3.1 χ 2 \chi^2 χ2分布
自由度:
统计学上的自由度是指当以样本的统计量来估计总体的参数时, 样本中独立或能自由变化的自变量的个数,称为该统计量的自由度。
首先,在估计总体的平均数时,由于样本中的 n 个数都是相互独立的,从其中抽出任何一个数都不影响其他数据,所以其自由度为n。
在估计总体的方差时,使用的是离差平方和。只要n-1个数的离差平方和确定了,方差也就确定了;因为在均值确定后,如果知道了其中n-1个数的值,第n个数的值也就确定了。这里,均值就相当于一个限制条件,由于加了这个限制条件,估计总体方差的自由度为n-1。
例如,有一个有4个数据(n=4)的样本,其平均值m等于5,即受到m=5的条件限制,在自由确定4、2、5三个数据后, 第四个数据只能是9,否则m≠5。因而这里的自由度υ=n-1=4-1=3。推而广之,任何统计量的自由度 υ = n − k υ=n-k υ=n−k(k为限制条件的个数)
可以从图中看到,自由度增加到足够大, χ 2 \chi ^2 χ2分布的概率密度曲线趋于对称。 χ 2 \chi ^2 χ2分布的极限是正态分布。
6.3.2 t分布
当 n ≥ 2 n\ge 2 n≥2, t分布的数学期望 E ( t ) = 0 E(t)=0 E(t)=0。
n ≥ 3 n \ge 3 n≥3, t分布的方差 D ( t ) = n n − 2 D(t)=\frac{n}{n-2} D(t)=n−2n。
由图可见,t分布的密度函数曲线与标准正态分 N ( 0 , 1 ) N(0,1) N(0,1)的密度函数曲线非常像,都是单峰偶函数。只是t的函数比正态分布的两侧尾部粗一些,方差大一些。
6.3.3 F F F 分布
6.4 样本均值的分布与中心极限定理
说明用样本均值 X ˉ \bar X Xˉ去顾及总体均值 μ \mu μ时,平均来说没有偏差。(无偏性);当n越来越大, X ˉ \bar X Xˉ的散布程度越来越小,即用 X ˉ \bar X Xˉ来估计 μ \mu μ越来越准确。
但是在实际问题中,总体分布并不总是正态分布或者近似正态分布的,此时 X ˉ \bar X Xˉ的分布也取决于总体分布。但当抽样个数n比较大,引出中心极限定理:
不管总体的分布是什么,此时样本均值 X ˉ \bar X Xˉ的分布总是近似正态分布,只要总体的方差 σ 2 \sigma ^2 σ2有限。 因为无论对什么总体分布,设总体均值为 μ \mu μ,总体方差为 σ 2 \sigma ^2 σ2。
6.5 样本比例的抽样分布
前面的抽样分布问题,都是关于计量值的变量,然鹅在实际应用中还是会遇到一些计数变量的情形。
例如,在消费调查及民意测验中常要对具有某一特征的产品或者事物的喜好人数进行研究。就可以假定总体中对具有某一特征产品的喜好比例为 π \pi π,在此条件下去研究当从总体中随机抽取n个个体进行调查时,喜好某一产品的人数 X X X的概率。在实际应用中我们所关心的正式总体中喜好某一产品的人数的比例 π \pi π。
如果在样本大小为n的样本中具有某一特征的个数为 X X X, 则此样本比例用 p ∧ \overset {\land}p p∧表示:
p ∧ \overset {\land}p p∧ = X n \frac{X}{n} nX
以后就用样本比例 p ∧ \overset {\land}p p∧来顾及总体比例 π \pi π。
6.6 两个样本平均之差的分布
实际中还会遇到比较两个平均值或比例的问题。比如:比较人们购买行为喜欢甲的比例还是乙的比例;比较两种不同投资项目的预期回报;
在比较两个总体均值之差的问题研究中,课考虑比较从两个总体中选出的两个独立随机样本的平均值 X ˉ 1 \bar X_1 Xˉ1与 X ˉ 2 \bar X_2 Xˉ2之差。 X ˉ 1 − X ˉ 2 \bar X_1 - \bar X_2 Xˉ1−Xˉ2与 μ 1 − μ 2 \mu_1 - \mu_2 μ1−μ2的接近程度如何?
少女Q的量化交易转型之路 #week 2 之二(计划改动)相关推荐
- 少女Q的量化交易转型之路 #week 1 之二
Continued- 第二章 算法 算法的定义:算法是解决特性问题求解步骤的描述,在计算机中为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性:有穷性,确定性,可行性,输入,输出. 算法设 ...
- 少女Q的量化交易转型之路 #week 1 之一
写在前头: 本科专业是自动化,比较偏工厂自动化的大型器械自动化.主要是学PLC, 电机拖动一类的电子领域课程,虽然不是很喜欢,大一时候也找不到什么喜欢的倒也是认真学.大一暑假去Rockwell实习了一 ...
- 少女Q的量化交易转型之路 #week 1 之三
continued- 第四章 栈与队列 4.1 栈的定义 很多电脑软件,比如word, phtoshop, 都有撤销操作,其实都是栈的方式来实现的. 栈(stack)是限定仅在表尾进行插入和删除操作的 ...
- 少女Q的量化交易之路 #week6 之二(金工101)
小哥给的金工宝典2333,之前零散的看到了第三章,因为大多是英文且对金融领域的英文专有名词很不熟,现在再看一遍就没什么印象了.虽然宝典已经非常详细-我还是做个笔记吧-(长期更新+感谢小哥2.0) 第二 ...
- 少女Q的量化交易之路 #week6 之一
week4,week5忙成狗,做了差不多3个project,2个coding assignment, 信号系统期中考试,开了1300km去了趟新奥尔良.即使现在还是欠了一个due,下周还有个deep ...
- 少女Q的量化交易之路 #week3 之一
这周事情非常多,Deep learning有一个project, Machine learning 的FSA算法实现也很难(之后可能会开个新坑).信号系统这门课也卡在跟轨迹上T_T Leetcode ...
- 《玩转股票量化交易》学习路线导览
前言 创建知识星球<玩转股票量化交易>的初心是为读者们提供一个深入学习和交流的平台,在搭建自己的量化交易系统之路上更有方向. 随着加入会员以及主题内容的不断增多,为了帮助新加入的会员能够更 ...
- 量化交易如何建立高效的交易系统(三)
阅读原文:http://club.jr.jd.com/quant/topic/1366928 京东金融官方资讯QQ群:456448095 有什么想咨询的都可以来询问我们 谈了这么多,貌似又回到了我们的 ...
- 《玩转股票量化交易》开启股票数据远程下载服务
前言 创建知识星球<玩转股票量化交易>的初心是为读者们提供一个深入学习和交流的平台,在搭建自己的量化交易系统之路上更有方向. 关于星球的学习路线导览可以参考这篇文章. <玩转股票量化 ...
最新文章
- Srping MVC入门推荐
- 雷林鹏分享:codeigniter框架文件上传处理
- 滨江机器人餐厅_餐厅来了机器人服务员
- nagios监控mysql服务_nagios监控mysql及邮件报警
- System.ComponentModel.Component : MarshalByRefObject, IComponent, IDisposable
- 移动安全-iOS(一)
- linux driver开发
- 深度学习——loss函数的学习笔记(legacy)
- mysql主要的两个索引Innodb和MyIASM。
- js操作json对象
- 计算机视觉 CS231n Course Introduction
- 最简单的U盘安装windows系统教程
- delphi技巧总结收集
- oracle 增量导出 导入,Oracle增量导入导出
- matlab2019b classification learner使用笔记
- mod_security简要安装设置指南
- 牛客小白月赛4 D.郊区春游
- 阿龙的学习笔记---ElasticSeach的学习与记录
- CCE to REG bundle
- 暮光之城 - Eclipse的DVD发行 - 另一个重磅炸弹DVD