线代 第一步第二步第三步到第三步是怎么变的

- 18岁以上
- 11岁以上
您的位置:
&& 考研资讯
2015考研线性代数如何复习
作者:网编整理&&来源:新东方论坛&&时间:
  2014年研究生备考的硝烟正在弥漫,另一场战役已经打响。在数学的三门课里,线性代数这门课的特点又是什么呢?线性代数这门课对考生的抽象能力的要求特别的高,大纲要求主要考查的有抽象行列式的计算,抽象矩阵求逆,抽象矩阵求秩,抽象行列式求特征值与特征向量,这四种抽象题型是线性代数每年常出题型,占有很大比重,要求同学们有较高的综合能力。
  线性代数的前后知识的连续性强完全是由它自身的知识体系和逻辑推理方式来决定的,很多同学也都说线性代数的公式概念结论特别的多,前后联系特别的紧密,在做一个题时,如果有一个公式或者结论不知道,后面的过程就无法做下去,其实这也符合考研大纲的要求的考生运用所学的知识分析问题和解决问题的能力。如果和高等数学做个比较,我们把高等数学看作是一个连续性的推理过程,线性代数就是一个跳跃性的推理过程,在做题时表现的会很明显。同学们在做高等数学的题时,从第一步到第二步到第三步在数学式子上一个一个等下去很清晰,但是同学们在做线性代数的题目时从第一步到第二步到第三步经常在数学式子上看不出来,比如行列式的计算,从第几行(或列)加到哪行(列)很多时候很难一下子看出来。针对上述特点,专家给出线性代数的各章节重要知识点具体复习建议,希望同学们的复习能够有的放矢。
  一、行列式与矩阵
  行列式、矩阵是线性代数中的基础章节,从命题人的角度来看,可以像润滑油一般结合其它章节出题,因此必须熟练掌握。
  行列式的核心内容是求行列式——具体行列式的计算和抽象行列式的计算。其中具体行列式的计算又有低阶和高阶两种类型,主要方法是应用行列式的性质及按行(列)展开定理化为上下三角行列式求解;而对于抽象行列式而言,考点不在如何求行列式,而在于结合后面章节内容的相对综合的题。
  矩阵部分出题很灵活,频繁出现的知识点包括矩阵各种运算律、矩阵的基本性质、矩阵可逆的判定及求逆、矩阵的秩、初等矩阵等。
  二、向量与线性方程组
  向量与线性方程组是整个线性代数部分的核心内容。相比之下,行列式和矩阵可视作是为了讨论向量和线性方程组部分的问题而做铺垫的基础性章节,而其后两章特征值和特征向量、二次型的内容则相对独立,可以看作是对核心内容的扩展。
  向量与线性方程组的内容联系很密切,很多知识点相互之间都有或明或暗的相关性。复习这两部分内容最有效的方法就是彻底理顺诸多知识点之间的内在联系,因为这样做首先能够保证做到真正意义上的理解,同时也是熟练掌握和灵活运用的前提。
  这部分的重要考点一是线性方程组所具有的两种形式——矩阵形式和向量形式;二是线性方程组与向量以及其它章节的各种内在联系。
  (1)齐次线性方程组与向量线性相关、无关的联系
  齐次线性方程组可以直接看出一定有解,因为当变量都为零时等式一定成立——印证了向量部分的一条性质“零向量可由任何向量线性表示”。
  齐次线性方程组一定有解又可以分为两种情况:①有唯一零解;②有非零解。当齐次线性方程组有唯一零解时,是指等式中的变量只能全为零才能使等式成立,而当齐次线性方程组有非零解时,存在不全为零的变量使上式成立;但向量部分中判断向量组是否线性相关、无关的定义也正是由这个等式出发的。故向量与线性方程组在此又产生了联系——齐次线性方程组是否有非零解对应于系数矩阵的列向量组是否线性相关。可以设想线性相关、无关的概念就是为了更好地讨论线性方程组问题而提出的。
  (2)齐次线性方程组的解与秩和极大无关组的联系
  同样可以认为秩是为了更好地讨论线性相关和线性无关而引入的。秩的定义是“极大线性无关组中的向量个数”。经过“秩→线性相关、无关→线性方程组解的判定”的逻辑链条,就可以判定列向量组线性相关时,齐次线性方程组有非零解,且齐次线性方程组的解向量可以通过r个线性无关的解向量(基础解系)线性表示。
  (3)非齐次线性方程组与线性表出的联系
  非齐次线性方程组是否有解对应于向量是否可由列向量组线性表示,使等式成立的一组数就是非齐次线性方程组的解。
  三、特征值与特征向量
  相对于前两章来说,本章不是线性代数这门课的理论重点,但却是一个考试重点。其原因是解决相关题目要用到线代中的大量内容——既有行列式、矩阵又有线性方程组和线性相关性,“牵一发而动全身”。
  本章知识要点如下:
  1.特征值和特征向量的定义及计算方法就是记牢一系列公式和性质。
  2.相似矩阵及其性质,需要区分矩阵的相似、等价与合同:
  3.矩阵可相似对角化的条件,包括两个充要条件和两个充分条件。充要条件一是n阶矩阵有n个线性无关的特征值;二是任意r重特征根对应有r个线性无关的特征向量。
  4.实对称矩阵及其相似对角化,n阶实对称矩阵必可正交相似于以其特征值为对角元素的对角阵。
  四、二次型
  这部分所讲的内容从根本上讲是特征值和特征向量的一个延伸,因为化二次型为标准型的核心知识为“对于实对称矩阵,必存在正交矩阵,使其可以相似对角化”,其过程就是上一章实对称矩阵相似对角化的应用。
  本章核心要点如下:
  1.用正交变换化二次型为标准型。
  2.正定二次型的判断与证明。
  (责任编辑:李艺菲)
经营许可证编号:060601京ICP备京公安备:&img src=&/50/v2-6c0e588d3def81f0d67f_b.jpg& data-rawwidth=&850& data-rawheight=&500& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&/50/v2-6c0e588d3def81f0d67f_r.jpg&&&blockquote&本文是&a href=&/question//answer/& class=&internal&&《如何七周成为数据分析师》&/a&的第十六篇教程,如果想要了解写作初衷,可以先行阅读七周指南。温馨提示:如果您已经熟悉数据库,大可不必再看这篇文章,或只挑选部分。&/blockquote&&p&在前一篇讲完概率分布后,我们再接再厉拿下假设检验,也就是大名鼎鼎的AB Testing。俗话说得好,再优秀的产品经理也跑不过一半AB测试。&br&&/p&&p&&strong&&strong&抽样&/strong&&/strong&&/p&&p&数据分析中,虽然数据越多越齐越好,可是受限于各类因素的制约,我们并不能获取全部的数据。比如Excel的性能限制,比如数据库不支持大文件导出、或者是无法全量进行的用户调研等。&/p&&p&抽样是一种应对方法,通过样本来推断总体,抽样结果提供的仅仅是相应总体特征的估计,「估计」这一点很重要。&/p&&p&抽样有很多方式,样本首要满足随机性。比如进行社会访谈,你不能只选择商场人流区,因为采访到的人群明显是同一类人群,反而会遗漏郊区和乡镇的人群,遗漏宅男,遗漏老人。&/p&&p&互联网产品中,抽样也无处不在,大名鼎鼎的AB测试就是一种抽样,选取一部分人群验证运营策略或者产品改进。通常筛选用户ID末尾的数字,比如末尾选择0~4,于是抽样出了50%的用户,这既能保证随机性,也能保证控制性。&/p&&p&毕竟抽样的目的是验证和检验,需要始终保证用户群体的完全隔离,不能用户一会看到老界面,一会看到改进后的新界面。以上也适用于推荐算法的冠军挑战,用户分群等。&/p&&p&至于放回抽样,分层抽样,在互联网的数据分析中用不太到,这里就略过了。&/p&&p&&strong&&strong&点估计&/strong&&/strong&&/p&&p&既然我们已经知道如何选择一个样本,接下来需要从样本推断总体。&/p&&p&列举一个场景。产品和运营人员每周都会进行一次用户调研,调研随机抽取30位用户对产品进行打分,分数0~10。根据历史数据计算出平均7.5分,标准差为1分。&/p&&p&现在的问题是,用户调研能否反应一些产品的状况?比如发布新版本,或者做了营销活动后,怎么判断是正面影响还是负面?假设本月产品经理们发布了一次新版本,这次调研抽取30位用户平均评分是7.3,究竟是正常的波动还是做糟糕了?&/p&&p&在统计学中,把总体的平均值标准差等称为总体参数,把样本的种种指标称为点估计量。s是样本标准差,σ是总体标准差。n是样本,N是总体。&/p&&p&点估计在原有的符号上加横线表示,比如样本均值,念做x拔(打出这个字符麻烦,我简称为拔了)。&br&&/p&&p&x拔是样本均值,现实中不可能保证每次调研的数据都是一致的,假设将抽样过程一而再,再而三的进行下去,那么调研获得的平均分也是波动的。此时,样本均值x拔是一个随机变量,称它的概率分布为x拔的抽样分布。&/p&&p&每次抽样得出的不同均值,必然会有一个期望值,E(x拔) = u,E(x拔)就是所有大量抽样的可能值的均值。对简单随机抽样,我们可以认为其数学期望等于u总体均值。当点估计量的期望值等于总体参数时,称为无偏估计。&/p&&p&当样本量占总体5%以上时,有求样本标准差公式如下:&/p&&br&&img src=&/equation?tex=%5Csigma_%7B%5Cbar%7Bx%7D+%7D%3D%5Csqrt%7B%5Cfrac%7BN-n%7D%7BN-1%7D+%7D%5Cfrac%7B%5Csigma%7D%7B%5Csqrt%7Bn%7D+%7D+& alt=&\sigma_{\bar{x} }=\sqrt{\frac{N-n}{N-1} }\frac{\sigma}{\sqrt{n} } & eeimg=&1&&&br&&p&当样本量占总体5%以下时,公式可以简化成:&/p&&br&&img src=&/equation?tex=%5Csigma_%7B%5Cbar%7Bx%7D+%7D%3D%5Cfrac%7B%5Csigma%7D%7B%5Csqrt%7Bn%7D+%7D+& alt=&\sigma_{\bar{x} }=\frac{\sigma}{\sqrt{n} } & eeimg=&1&&&br&&p&利用上述的两个公式,可以计算出样本的标准差。回到用户调研的问题,它的总体均值为7.5,因为调研的用户量肯定小于总体5%,于是能求出样本的标准差为0.18。&/p&&br&&p&上述数学期望和标准差的计算适用于所有总体,可如果想要知道具体的概率呢?比如分数小于等于7.3的可能性?如果是10%,那么说明这是稀少的情况,产品的改版未必尽如人意。如果是90%,说明这是数据的正常波动。&/p&&br&&p&x拔作为概率分布,也非为正态分布和非正态分布。根据统计学中的中心极限定理,当样本数足够时(n&30),x拔的抽样分布可近似于正态分布。&/p&&br&&p&只要是正态分布就好办了,把问题转换成标准正态分布的概率求解。调研样本评分x=7.3分,标准差σ为0.18。总体均值u为7.5分。&/p&&br&&img src=&/equation?tex=z%3D%5Cfrac%7Bx-u%7D%7B%5Csigma+%7D+& alt=&z=\frac{x-u}{\sigma } & eeimg=&1&&&br&&p&z = (7.3-7.5)/0.18 = -1.11。于是P(x&=7.3)=P(z&=-1.1) = 13.3%。上述结果说明,本次抽样得到7.3分(或者更低)的概率为13.3%,产品人员或许可以相信,这次改版并不好。&/p&&br&&p&通过抽样估算总体,它的概率计算是以样本标准差作为依据的,换言之,如果样本标准差变化,则概率一定变化。而样本标准差和样本容量n息息相关。如果调研用户数是100位,那么哪怕其他数字没变化,最终概率也会变成2.2%。这是样本容量增加,均值的标准差减少了误差。&/p&&br&&p&&strong&区间估计&/strong&&/p&&br&&p&点估计是用于估计总体参数的样本统计量,我们不可能通过点估计就给出总体参数的一个精确值,更稳妥的方法是加减一个边际误差,通过一个区间值来估计。&/p&&br&&p&上文的用户调研案例,已经知道了总体均值和标准差。可是它的总体均值也只是通过历次调研作出的假设,并不能反应产品所有用户的评价。一个更实际的应用是,如何通过一次调研来计算用户的总体评价。这是反其道而行之。&/p&&br&&p&通过调研的历史数据,已经知道了用户打分的标准差是1。最近产品人员进行了一次大规模的调研,访问了200位用户,得到样本均值7.5分。现在需要计算总体均值的区间。&/p&&br&&p&通过点估计公式,可以得出样本标准差为0.07。在正态分布的经验公式中,已知任何正态分布的随机变量都有95%的值落在均值附近1.96个标准差以内。因此x拔的值一定有95%落在均值u的1.96个标准差以内。&/p&&br&&p&此时,1.96个标准差等于1.96*0.07 = 0.13。利用总体均值的区间估计公式:&/p&&br&&img src=&/equation?tex=%5Cbar%7Bx%7D+%5Cpm+z_%7B%5Csigma%2F2%7D%5Cfrac%7B%5Csigma%7D%7B%5Csqrt%7Bn%7D%7D++& alt=&\bar{x} \pm z_{\sigma/2}\frac{\sigma}{\sqrt{n}}
& eeimg=&1&&&br&&p&将数据代入:&/p&&br&&img src=&/equation?tex=7.5+%5Cpm+z_%7B%5Csigma%2F2%7D%5Cfrac%7B1%7D%7B%5Csqrt%7B200%7D%7D++& alt=&7.5 \pm z_{\sigma/2}\frac{1}{\sqrt{200}}
& eeimg=&1&&&br&&p&这里多出了一个新的符号Zσ/2,称之为置信水平,之所以除2是因为正态分布左右对称。它代表的是「随机变量都有95%的值落在均值附近1.96个标准差以内」,即均值有95%的概率落在这个区间内,也叫做95%置信水平。推广开来,也有90%置信水平,99%置信水平等。&br&&/p&&br&&p&1.96是95%置信水平的Zσ/2值,我在上文已经求出边际误差为0.13,最后加入平均值得到答案7.36~7.64,于是可以说,通过调研样本均值估计,总体用户的打分有95%的概率在7.36~7.64之间。我们把[7.36,7.64]叫做置信区间。&/p&&br&&p&大家可能也已经猜出来了,为了获得更高的置信水平,必然会得到更宽的置信区间。比如我假设一个置信区间是[7,8],那么它的置信度肯定无限接近100,因为它几乎囊括了所有的可能。如何选择置信水平和区间,是数据分析中的要点之一。&/p&&br&&p&区间估计中还有一种常见情况,即σ未知,上文的案例我们知道了总体的标准差,如果标准差也不知道呢?毕竟案例也只是以历史调研数据假设了标准差,未必反应了用户真实的情况。于是再给出一个新的问题,访问了200位用户,得到样本均值7.5分,标准差为2,那么总体均值是多少?&/p&&br&&p&通过样本标准差估计总体标准差,总体均值是以t分布(上文对应的叫做z分布)的概率分布为依据。t分布假设抽样总体满足正态分布,但是非正态分布中,也是能用t的,效果不错。&/p&&br&&p&t分布依赖一种叫自由度df的的参数。与标准正态分布曲线相比,df越小,t分布曲线愈平坦;df愈大,t分布曲线愈接近正态分布曲线,当df=∞时,t分布曲线为标准正态分布曲线。区间估计公式如下:&/p&&br&&img src=&/equation?tex=%5Cbar%7Bx%7D+%5Cpm+t_%7B%5Csigma%2F2%7D%5Cfrac%7Bs%7D%7B%5Csqrt%7Bn%7D%7D++& alt=&\bar{x} \pm t_{\sigma/2}\frac{s}{\sqrt{n}}
& eeimg=&1&&&br&&p&公式没有大的变化,总体标准差σ变化为样本标准差s,置信水平由t概率表计算。t概率的区间分布,需要自由度和置信水平两个参数。自由度=样本量-1,案例中的自由度为199。然后使用Excel的TINV( )函数计算,当置信水平为95%时,TINV(0.05,199)=1.97。代入公式:&/p&&br&&img src=&/equation?tex=7.5+%5Cpm+1.971%5Cfrac%7B2%7D%7B%5Csqrt%7B200%7D%7D++& alt=&7.5 \pm 1.971\frac{2}{\sqrt{200}}
& eeimg=&1&&&br&&p&得到区间[7.22,7.77],在总体标准差未知的情况下,可以通过样本均值7.5和标准差2计算总体均值有95%的概率落在7.22~7.77之间。&/p&&br&&p&&strong&&strong&
假设检验&/strong&&/strong&&/p&&br&&p&在熟悉掌握点估计和区间估计之后,深入学习假设检验。&/p&&br&&p&何为假设检验?假设检验是对总体参数做一个尝试性的假设,该尝试性的假设称为原假设,然后定义一个和原假设完全对立的假设叫做备选假设。假设检验就是通过样本数据对两个对立假设进行检验。&/p&&br&&p&假设检验有一套成熟的方法论。从参数看,即可以计算平均数,也可以计算比率。从样本看,可以划分为单样本和双样本。单样本是从总体中抽取一部分进行样本均数和总体均数的比较。用户调研就是一个典型的单样本。从假设的条件看,有单侧检验(仅大于或小于的可能性)和双侧(仅不可能,包含大于和小于两种情况)检验。&/p&&br&&p&数据分析中更多的情况是两组样本的比较,譬如男女用户的差异、用户群体的差异、以及产品AB测试的好与坏。因为篇幅原因,案例将重点放在双样本检验中,单样本检验熟悉点估计和区间估计后不难。&/p&&br&&p&回到最开始的案例,当通过调研发现用户对产品评分下降了,接下来得讨论怎么做。产品经理们说:用户都傻兮兮的,它们对产品改版无法作出有效的判断,所以打分不算数,应该用一套更好的判断方法。&/p&&br&&p&这时以产品改版后的活跃相关指标作为标准,其中一半用户不做改变,还是原始功能,成为对照组。另外一半用户体验新功能,为改进组,然后根据一段时间后的表现来判断改版好与不好。&/p&&br&&p&活跃指标怎么设立很大程度影响如何用假设检验。既可以用均值法,即用户平均使用时长,或一段时间窗口内的平均活跃用户数来衡量,也可以用比例法,即某一时间内的活跃率。两者对应不同的公式,这里以平均活跃用户数举例。&/p&&br&&p&假设检验首先需要设立原假设和备选假设,这里很容易犯错。在许多假设检验中,都以备选假设为出现点,它是希望得到支持的结论。因为之前用户调研的评分是下降的,于是检验更希望「拒绝」活跃上升或不变,从而得出下降的结论。&/p&&br&&p&原假设H0:活跃提升或不变;备选假设Ha:活跃下降。如果样本结果得出拒绝H0的结论,那么可以做出Ha为真的推断。&/p&&br&&p&不同的样本量和总体方差使用的检验方法不同,下图是不同情况下使用的检验方法。样本是否大于小于30是因为中心极限定理,在大样本量,且总体方差未知时,使用t检验还是z检验均可,因为t分布近似于z分布。我们使用z检验做双样本均值。&/p&&br&&img src=&/v2-babb94cea3d2d9b78fad1c2d_b.png& data-rawwidth=&1804& data-rawheight=&380& class=&origin_image zh-lightbox-thumb& width=&1804& data-original=&/v2-babb94cea3d2d9b78fad1c2d_r.png&&&p&将用户分割出两个群体体验产品功能,原始对照组和改进组都有50000用户。对照组的七日平均活跃数u1=8500,标准差为s1=1250,改进组的七日平均活跃数为u2=8300,标准差s2=1240。当总体标准差未知时,有公式:&/p&&br&&img src=&/equation?tex=z%3D%5Cfrac%7B%5Cbar%7Bx_%7B1%7D+%7D+-%5Cbar%7Bx_%7B2%7D+%7D%7D%7B+%5Csqrt%7B+%7B%5Cfrac%7Bs_%7B1%7D%5E%7B2%7D+%7D%7Bn1%7D%2B%5Cfrac%7Bs_%7B2%7D%5E%7B2%7D%7D%7Bn2%7D%7D+%7D+%7D& alt=&z=\frac{\bar{x_{1} } -\bar{x_{2} }}{ \sqrt{ {\frac{s_{1}^{2} }{n1}+\frac{s_{2}^{2}}{n2}} } }& eeimg=&1&&&br&&p&计算出z=25.399,远大于1.96,p值无限接近0,几乎不可能发生,也就说明改进组的活跃上升或者等于是个极小概率事件,我们拒绝了原假设,接受了备选假设。若还想深入的查看活跃究竟下降了多少,使用双样本均值计算置信区间:&/p&&br&&img src=&/equation?tex=%28%5Cbar%7Bx%7D_%7B1%7D-%5Cbar%7Bx%7D_%7B2%7D+%29%5Cpm+z_%7B%5Csigma+%2F2%7D+%5Csqrt%7B%5Cfrac%7Bs_%7B1%7D%5E%7B2%7D+%7D%7Bn1%7D%2B%5Cfrac%7Bs_%7B2%7D%5E%7B2%7D%7D%7Bn2%7D%7D+& alt=&(\bar{x}_{1}-\bar{x}_{2} )\pm z_{\sigma /2} \sqrt{\frac{s_{1}^{2} }{n1}+\frac{s_{2}^{2}}{n2}} & eeimg=&1&&&br&&p&两个样本均值之差的95%置信区间为[183.566,215.433]。也就是说七日平均活跃数有95%的可能性下降了183~215之间。&/p&&br&&p&假设检验的难点在于诸多知识点和业务的结合使用,限于文章的篇幅,我省略了不少概念点,这块需要大家多练习,比如用曾经文章的练习数据,计算上海和杭州的数据分析师工资均值是否相等,金融的工资是不是比电商的高。实际分析中不会有那么复杂的计算,我知道大家公式看晕了,不论Excel、R或者Python都有简便的函数使用,只要知道结果的符号意义就行了。&/p&&p&————&/p&&p&统计的内容告一段落了,这些都是比较基础的知识点,没有写得过于复杂,其一因为我统计本身不擅长(读书时没好好学),其二应用中我也不追求背后的数学原理。这大概是我写得最吃力的系列了。虽然还有时间序列,方差分析等内容,就留待以后吧。&/p&&p&下一篇文章写业务,因为历史文章已经涉及不少,反复讲没啥意思,所以一篇文章足矣,将数据中涉及的各类业务指标和知识点明即可。然后就是Python了。嗯,基础数据分析的内容已经倒计时了。&/p&&p&—————&/p&&p&欢迎大家关注我的个人公众号:tracykanc&/p&
本文是的第十六篇教程,如果想要了解写作初衷,可以先行阅读七周指南。温馨提示:如果您已经熟悉数据库,大可不必再看这篇文章,或只挑选部分。在前一篇讲完概率分布后,我们再接再厉拿下假设检验,也就是大名鼎鼎的AB Testing。…
&p&感谢大家的厚爱,这几天赞、感谢和关注的增长有点不讲道理。我严格意义上开始学习机器学习,主要是深度学习是从7月初CS231n开始的,现在差不多把这门课学完了,但很多地方还是囫囵吞枣过去的,半瓶水摇晃的程度。这个帖子基本是我把我看到的机器学习,特别是机器学习里深度学习相关的专栏全部陈列在这里。具体每个专栏的质量怎么样,应该是有什么样的受众我都不能保证。这个帖子我会继续更新,大家如果有一些关于这些专栏的反馈或者看到了其它好的专栏都欢迎在下面评论,我如果看到其它好的专栏也会在这里更新,谢谢大家。&/p&&p&---------------------------------------------------------------------------------------------------------------&/p&&p&最后更新时间:,增加了几个专栏,加粗的专栏是更新比较频繁并且让我个人受益比较多的。&/p&&br&&ol&&li&&b&&a href=&/furthersight& class=&internal&&欲穷千里目 - 知乎专栏&/a&&/b& 作者是南京大学LAMDA组的Ph.D. Candidate,内容涉及计算机视觉、机器学习。&/li&&li&&a href=&/easyml& class=&internal&&炼丹实验室 - 知乎专栏&/a& 深度学习相关。&/li&&li&&a href=&/uqer2015& class=&internal&&量化哥 - 知乎专栏&/a& 量化交易相关,涉及机器学习。&/li&&li&&a href=&/hsmyy& class=&internal&&无痛的机器学习 - 知乎专栏&/a& 机器学习原理及应用。&/li&&li&&a href=&/dlclass& class=&internal&&深度学习大讲堂 - 知乎专栏&/a& 深度学习相关。&/li&&li&&a href=&/prml-paper-reading& class=&internal&&PRML - 知乎专栏&/a& 机器学习与数据科学相关,作者是阿里巴巴算法工程师。&/li&&li&&a href=&/paperweekly& class=&internal&&PaperWeekly - 知乎专栏&/a& 介绍了很多机器学习在自然语言处理上的paper。&/li&&li&&a href=&/gongwenjia& class=&internal&&Data Science - 知乎专栏&/a& 数据科学相关一些算法的介绍。&/li&&li&&a href=&/pengtaox& class=&internal&&谢澎涛的知乎专栏 - 知乎专栏&/a&
作者为CMU机器学习方向的PhD学生。&/li&&li&&b&&a href=&/intelligentunit& class=&internal&&智能单元 - 知乎专栏&/a&&/b& 翻译了CS231n的笔记,另有数篇介绍深度增强学习相关内容的文章。&/li&&li&&a href=&/system& class=&internal&&【Machine Learning】 - 知乎专栏&/a&&/li&&li&&a href=&/dataman& class=&internal&&数据分析侠 - 知乎专栏&/a& 数据科学、机器学习相关的软硬文。&/li&&li&&a href=&/cxwangyi& class=&internal&&Occam's Razor - 知乎专栏&/a& 机器学习相关。&/li&&li&&a href=&/Stark& class=&internal&&机器鼓励师手册 - 知乎专栏&/a&
作者是阿里巴巴算法工程师。&/li&&li&&a href=&/mlearn& class=&internal&&机器学习笔记 - 知乎专栏&/a& Coursera上Andrew Ng课程的笔记,供英语不够好的朋友们参考用。&/li&&li&&a href=&/ItsFuture& class=&internal&&机器之眼 - 知乎专栏&/a& 关于深度学习在计算机视觉方面的应用。&/li&&li&&a href=&/chicken-life& class=&internal&&菜鸡的啄米日常 - 知乎专栏&/a& 介绍了深度学习里比较流行的Keras框架,另有二次元福利【大雾】。&/li&&li&&a href=&/TsingJyuData& class=&internal&&清雨的 Data Science 笔记 - 知乎专栏&/a& 机器学习相关。&/li&&li&&a href=&/NLPBlog-WuYu& class=&internal&&NLPer新手练习场 - 知乎专栏&/a& 作者北航CS博士在读,NLP方向。&/li&&li&&a href=&/HicRhodushicsalta& class=&internal&&Hic Rhodus, hic salta - 知乎专栏&/a& 作者为中科院、德国马普学会计算神经科学方向博士,专栏涉及深度学习和神经科学的一些交叉应用。&/li&&li&&a href=&/c_& class=&internal&&混沌巡洋舰 - 知乎专栏&/a& 涉及诸多领域,包括深度学习、计算神经科学等等。&/li&&li&&a href=&/lmrebuilt& class=&internal&&Learning Machine Rebuilt - 知乎专栏&/a& 作者机器学习方向博士在读。&/li&&li&&a href=&/ml-etali& class=&internal&&EtaLi机器学习报告 - 知乎专栏&/a& 机器学习技术介绍,作者现就职于今日头条lab。&/li&&li&&a href=&/feynman-rainbow& class=&internal&&费曼的彩虹 - 知乎专栏&/a& 机器学习、深度学习、自然语言处理相关。&/li&&li&&a href=&/startdl& class=&internal&&深度学习:从入门到放弃 - 知乎专栏&/a&&/li&&li&&a href=&/mubing& class=&internal&&木柄的专栏 - 知乎专栏&/a& 机器学习理论相关。&/li&&li&&a href=&/chuchu& class=&internal&&矗不知其几千万落 - 知乎专栏&/a& 强化学习。&/li&&li&&a href=&/ai-leader& class=&internal&&AI带路党 - 知乎专栏&/a& 深度学习相关。推荐讲&b&Wasserstein GAN&/b&的那篇&b&。&/b&&/li&&li&&a href=&/c_& class=&internal&&The World of Computing&/a& 何神的专栏,机器学习相关。&/li&&li&&a href=&/ml-simple& class=&internal&&机器学习极简主义 - 知乎专栏&/a& 深度学习相关。&/li&&li&&b&&a href=&/xitucheng10& class=&internal&&西土城的搬砖日常 - 知乎专栏&/a&&/b& 多位作者参与,每篇文章基本都介绍了一篇论文,强推。&/li&&/ol&
感谢大家的厚爱,这几天赞、感谢和关注的增长有点不讲道理。我严格意义上开始学习机器学习,主要是深度学习是从7月初CS231n开始的,现在差不多把这门课学完了,但很多地方还是囫囵吞枣过去的,半瓶水摇晃的程度。这个帖子基本是我把我看到的机器学习,特别…
&p&记录下本人飞行器专业(机械加力学)出身:&/p&&p&1.没有机器学习理论知识(大部分机器学习知识来自知乎)&/p&&p&2.没有计算机科班知识(只会给CAX软件做二次开发会写点python脚本),&/p&&p&3.硬件很差,没有GPU(只有8G内存条还因为最近涨价舍不得加内存)&/p&&p&如标题所说,零基础自学两月后三月三次进入kaggle比赛top20经历。(纯solo,我身边都是跟我一样造飞行器的,也没能跟我组队的)&/p&&p&本文纯粹是国庆无聊,写出来吹吹牛逼,若有人看到,勿见怪。&/p&&p&&b&第一次参加比赛(18/3274 ,Sberbank Russian Housing Market)差两名金牌&/b&&/p&&p&这是一个房价预测题,我从kernel下载了一个baseline,看到都是把预测目标设置为房屋总价,我想我们平时说房价不都爱说均价多少多少吗,然后我就改了几行语句,把目标改为预测均价,再乘以面积。然后我就分分钟进前20名了~~~~~~~~&/p&&p&&b&第二次参加比赛(209/3835 ,Mercedes-Benz Greener Manufacturing)&/b&&/p&&p&回归题,在参加完房价比赛花了一周玩玩,然后读完kernel后确定是个下注比赛,从kernel下载了一个baseline,再根据自己分析下了一个把握最大的(改一个数),然后混个铜牌。&/p&&p&&b&第三次参加比赛(20/2623 ,Instacart Market Basket Analysis)差五名金牌&/b&&/p&&p&购物篮问题,但是又被转化成了xgboost问题,还是从kernel下载了一个baseline,然后我看到当时排第一的说F1-score优化对成绩提升很高,并有人给了论文,我英语不好懒得读论文,然后根据我自己的理解写了一个F1-score优化,然后用baseline的probability,分分钟就进了25名。这让我对参加kaggle的人水平产生了怀疑,很难想象比赛进行了两个月,第一名明确告诉大家写F1-score优化有用的情况下,居然没几个人写出来,最后还是一个grandmaster公布了F1-score优化代码,才一堆人分数往上冲的。&/p&&p&&b&第四次参加比赛(13/1095 ,Web Traffic Time Series Forecasting)差一名金牌&/b&&/p&&p&时间序列问题,我零基础,又没硬件搞神经网络,所以没打算参加,但是在比赛结束的前一周去瞄一眼发现居然kerne里最好的baseline居然是median。于是我就在最后一个周末用lightgbm做了个预测median的模型,把时间序列题转化成了回归题,就这样居然也拿到了13名。呵呵。。(update:最新排名已经掉到15名了,只顾着抓weekly特征,没抓到yearly特征,预计最后会掉到21名,刚好掉出top20,真打脸。。)&/p&&p&&br&&/p&&p&&b&小结:&/b&&/p&&p&1.能连着没花多多少时间拿top20,还是有点好运气成分的,并且搞得我现在有点不敢参加新比赛了,怕破坏了我现在看起来不错的成绩。&/p&&p&2.然而又感觉运气不是太好,连着都是差几名金牌,要不然该是master了。&/p&&p&3.感觉机器学习和我现在从事的CAE工作差不多,都是用别人的黑盒子加一点自己的二次开发,最后拼的还是人的体力、机器的算力和人对理论使用的经验(不是推导是使用)。&/p&&p&4.xgboost真是大大降低了机器学习的门槛,对于新手比较难搞得“缺失值”,“归一化”,“调参”&/p&&p&都解决的很好。可以让我这种新手都毫不费力的和其他人站在一个起跑线上,哈哈!&/p&&p&&b&PS:&/b&&/p&&p&看知乎上都说kaggle对找工作有帮助,那像我这种拿了三个solo top20,但事实上却不懂机器学习理论和数据结构算法的可以转行吗?~~~~~~~~~~&/p&&p&&/p&&p&&/p&
记录下本人飞行器专业(机械加力学)出身:1.没有机器学习理论知识(大部分机器学习知识来自知乎)2.没有计算机科班知识(只会给CAX软件做二次开发会写点python脚本),3.硬件很差,没有GPU(只有8G内存条还因为最近涨价舍不得加内存)如标题所说,零基础自…
&img src=&/50/401ceabcab33b83c3f9e04_b.png& data-rawwidth=&457& data-rawheight=&265& class=&origin_image zh-lightbox-thumb& width=&457& data-original=&/50/401ceabcab33b83c3f9e04_r.png&&&p&本文由JoinQuant量化课堂推出,请关注官号:&a class=&internal& href=&/p/&&&span class=&invisible&&https://&/span&&span class=&visible&&/p/21&/span&&span class=&invisible&&390521&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&本文的难度属于入门&/p&&h2&&b&均值回归&/b&&/h2&&p&均值回归,又称Mean Reversion,是在价格震荡中博取反弹的交易思路,它是基于Poterba和Summers(1987)首先提出的一种现象,如果要用一句话总结,那就是“跌下去的迟早要涨上来”。想理解均值回归,我们要先讲一下价格的波动性。&/p&
看过K线图的话,我们都知道股票的价格从来都不会平滑地上涨或下跌,而总是在移动的过程中上下波动,画出一些波浪。&img data-rawheight=&159& data-rawwidth=&554& src=&/146fbdf92ce41e0f6bd07f32182cdd30_b.png& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/146fbdf92ce41e0f6bd07f32182cdd30_r.png&&&p&如果市场满足Fama提出的市场有效性假说,那么这种波动现象应该是不存在的,然而现实中的市场并不是完全有效的。有许多研究尝试解释价格波动的现象,专家们普遍认为是诸如投资热点、对新闻的过度反应以及投资者的投机心态等非有效因素致使价格偏离了合理定价,从而造成了价格的波动。&/p&&p&均值回归的理论基于以下观测:价格的波动一般会以它的均线为中心。也就是说,当标的价格由于波动而偏离移动均线时,它将调整并重新归于均线。那么如果我们如果能捕捉偏离股价的回归,就可以从此获利。&/p&&p&
举例来说,下图是一支股票的日线图,其中紫色曲线是20日均线,蓝色箭头为在股价大幅度偏离时买入股票可以获得的收益。&/p&&img data-rawheight=&251& data-rawwidth=&554& src=&/639fbc9cffa8a823ab3e9ae7fb46fff0_b.png& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/639fbc9cffa8a823ab3e9ae7fb46fff0_r.png&&&br&&h2&&b&一个最简单最简单的策略&/b&&/h2&&p&根据均值回归的思路,我们认为一支股票的价格低于其均线越多的时候,它回归的可能性就越大。因此,我们可以以一支股票的价格与其均线的偏离程度作为评估标准,并选择买入该偏离度最高的股票。
&/p&&p&那么偏离度该如何计算呢?如果用
代表现在的股价,用
代表均线的价格,那么这个度量是&img src=&/equation?tex=%5Cfrac%7BMA-P%7D%7BMA%7D+& alt=&\frac{MA-P}{MA} & eeimg=&1&&&/p&&p&好了,你也许有两个问题:&/p&&p&&b&1.
&/b&&b&为什么是均线减价格?&/b&&/p&&p&因为我们认为价格低于均线越多越值得买,因此用均线减去价格算出的差率越高我们认为越值得买。&/p&&p&&b&2.
&/b&&b&为什么要除以均线?&/b&&/p&&p&因为价格和均线的差的单位是元,需要除以均线才可以在股票之间相互对比。比如股票A的价格是1,均线是2,股票B的价格是99,均线是100;它们的均线和价格差都是1,但很明显按照我们的思路,股票A更值得买,这要除以均线才能体现出来。&/p&&p&&b&那么策略如下:&/b&&/p&&p&先决定好参数:选定股票池,以
日移动均线作为比价基准,按每
天为周期调换仓位,以及仓内持有的股票数量
。&/p&&p&·在每个调仓日进行以下操作:&/p&&ol&&li&计算池内股票的N日移动均线;&/li&&li&计算池内所有股票价格与均线的偏离度;&/li&&li&选取偏离度最高的num_stocks支股票并进行调仓。 &/li&&/ol&&br&&h2&&b&回测结果&/b&&/h2&&p&以下回测都是以沪深300为股票池进行的,每次调仓选择20支股票。&/p&
首先是均线长度50天,持仓50天的回测。&img data-rawheight=&136& data-rawwidth=&554& src=&/423db84bd35b722b9c788765_b.png& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/423db84bd35b722b9c788765_r.png&&&p&收益和指数不相上下,并且回撤巨大。可以看出在暴跌环境中,大家一起往死里跌,均值回归什么的都无所谓了。&/p&&p&然后是均线长度20天,持仓5天。&img data-rawheight=&137& data-rawwidth=&554& src=&/ea07de81ffc_b.png& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/ea07de81ffc_r.png&&&/p&&p&哇,这真是,收益低不说回撤还这么吓人。&/p&&p&最后是均线长度50天,持仓20天。&img data-rawheight=&137& data-rawwidth=&554& src=&/afc616affa7bd3531b70dc_b.png& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/afc616affa7bd3531b70dc_r.png&&&/p&&p&算是一个可以接受的回测哟~~&/p&&h2&&b&策略的难点&/b&&/h2&&p&从上面的回测可以看出,以均值回归的思路做出的简单策略虽然收益可观,但实则回撤猛烈,很不稳定。通过分析不难看出,主要的问题就是,&b&买在半山腰了&/b&。
&/p&&p&既然是博取反弹,那么难免会买在半山腰,比如在下图K线的情况中。假设我们在那根大阴棒的底部判断“哦,这个价格与均线偏差够大了”,然后买了进去,那就会接着吃跌。最后价格虽然又触碰到均线,但其实是价格在低位停留太久把均线拉了下来,实际上没有给我们什么收益。&/p&&img data-rawheight=&264& data-rawwidth=&554& src=&/ebb36b7b7_b.png& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/ebb36b7b7_r.png&&&p&所以,本策略的改进方向:一是通过定量统计分析的方法,判断更合理的入场时机,二是在买在半山腰后的止损判定。&/p&&p&文中回测代码请参见:&a class=& wrap external& href=&/?target=https%3A///post/1608& target=&_blank& rel=&nofollow noreferrer&&/post/1608 &i class=&icon-external&&&/i&&/a&&/p&&p&可以克隆下来自己改哦 &br&&/p&&p&本文由JoinQuant量化课堂推出,版权归JoinQuant所有,商业转载请联系我们获得授权,非商业转载请注明出处。
本文由JoinQuant量化课堂推出,请关注官号:本文的难度属于入门均值回归均值回归,又称Mean Reversion,是在价格震荡中博取反弹的交易思路,它是基于Poterba和Summers(1987)首先提出的一种现象,如果要用一句话总结,那就是“跌下去…
&img src=&/50/66ec07e3fe1c_b.png& data-rawwidth=&538& data-rawheight=&521& class=&origin_image zh-lightbox-thumb& width=&538& data-original=&/50/66ec07e3fe1c_r.png&&&p&&b&导语:&/b&本文旨在直观地为大家介绍协整的概念,帮助大家理解其基本含义,这个概念提出的动机,以及简单的应用场景。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&本文由JoinQuant量化课堂推出,难度属于进阶下,理解深度属于level-0。
在官号之后发出,恩
阅读前请准备:
基本的统计概念,理解深度level-0
平稳的概念,理解深度level-0
&/code&&/pre&&/div&&h2&协整简介:&/h2&&p&这里只是想给大家指出协整的直观定义,并没有涉及严格的数学符号的定义及严密的公式推导。如果大家感兴趣,可以参考:&a href=&/?target=https%3A//en.wikipedia.org/wiki/Cointegration& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&en.wikipedia.org/wiki/C&/span&&span class=&invisible&&ointegration&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&。量化课堂未来也会对其深度内容探讨。&/p&&p&&b&为什么要平稳&/b&&b&/&/b&&b&协整:&/b&&/p&&p&提到协整,就不得不提平稳性。&/p&&p&简单地说,平稳性(stationarity)是一个序列在时间推移中保持稳定不变的性质,它是我们在进行数据的分析预测时非常喜欢的一个性质。如果一组时间序列数据是平稳的,那就意味着它的均值和方差保持不变,这样我们可以方便地在序列上使用一些统计技术。我们先看一个例子,了解平稳和非平稳序列直观上长什么样。&/p&&img data-rawheight=&521& data-rawwidth=&538& src=&/66ec07e3fe1c_b.png& class=&origin_image zh-lightbox-thumb& width=&538& data-original=&/66ec07e3fe1c_r.png&&&p&&i&图片来源:维基百科&/i&&/p&&p&上图中,靠上的序列是一个平稳的序列,我们能看到它始终是围绕着一个长期均值在波动,靠下的序列是一个非平稳序列,我们能看到它的长期均值是变动的。&/p&&p&举一个应用的例子,如果某个资产的价格序列(或者两个序列的价差)是平稳的,那么当它在偏离了其均值后,人们可以期待价格会在未来的某一个时间回归这个均值。我们可以借助这个性质进行投资从而获利。假设一只股票的长期均值是9元,而现在的价值是8元。如果经过检验,我们认为这个股票的历史序列具有平稳的性质,并且假设这个平稳性是&b&能保持的&/b&,就可以买入这只股票,等待未来它的价格回归9元,从而获得1元的利润。&/p&&p&
这就是一个具有平稳性质的股票价格序列:&/p&&p&&img data-rawheight=&153& data-rawwidth=&554& src=&/91de1f6d95e5269cfd034_b.png& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/91de1f6d95e5269cfd034_r.png&&&br&平稳性是很好用,但在现实中,绝大多数的股票都是非平稳的,那么我们是否还能够利用平稳性质进行获利呢?答案是肯定的,这时协整关系(cointegration)就出场了!如果两组序列是非平稳的,但它们的线性组合可以得到一个平稳序列,那么我们就说这两组时间序列数据具有协整的性质,我们同样可以把统计性质用到这个组合的序列上来。但是需要指出的一点,协整关系并不是相关关系(correlation)。&/p&&p&举个例子,两组时间序列数据的差是平稳的,则我们可以根据这个差的平稳性进行投资获利:当两只股票的价差过大,根据平稳性我们预期价差会收敛,因此买入低价的股票,卖空高价的股票,等待价格回归的时候进行反向操作从而获利。&/p&&p&这就是配对交易(pairs trading)的由来。是不是很清晰。&/p&&p&&b&平稳性和检验方法:&/b&&/p&&p&严格地说,平稳性可以分为严平稳(strictly stationary)和弱平稳(或叫协方差平稳,covariance stationary等)两种。严平稳是指一个序列始终具有不变的分布函数,而弱平稳则是指具序列有不变的常量的描述性统计量。所有强平稳序列都满足弱平稳性质,但反之不成立。我们一般所说的平稳都是指弱平稳。在时间序列分析中,我们通常通过单位根检验(unit root test)来判断一个过程是否是弱平稳的。&/p&&p&一个常见的单位根检验方法是Dickey-Fuller test,大致思路如下:假设被检测的时间序列
满足自回归模型
为回归系数,
为噪声的随机变量。若经过检验,发现
& 1,则可以肯定序列是平稳的。在Dickey Fuller Test的基础上,还有衍生出来的augmented Dickey-Fuller test,是考虑了序列的滞后性,在此不做过多陈述,在未来&a href=&/?target=https%3A///study%3Ff%3Dhome%26m%3Dmemu& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&量化课堂&i class=&icon-external&&&/i&&/a&的数学专栏里将会介绍。&/p&&h2&&b&举一个应用的例子&/b&&/h2&&p&我们人为地构造两组数据,由此直观地看一下协整关系。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&import numpy as np
import pandas as pd
import seaborn
import statsmodels
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import coint
&/code&&/pre&&/div&&b&构造数据&/b&&p&首先,我们构造两组数据,每组数据长度为100。第一组数据为100加一个向下趋势项再加一个标准正态分布。第二组数据在第一组数据的基础上加30,再加一个额外的标准正态分布。有&/p&&img src=&/equation?tex=X_t%3D100%2By_t%2B%5Cvarepsilon+_t& alt=&X_t=100+y_t+\varepsilon _t& eeimg=&1&&&img src=&/equation?tex=Y_t%3DX_t%2B30%2B%5Cmu+_t& alt=&Y_t=X_t+30+\mu _t& eeimg=&1&&&p&其中&img src=&/equation?tex=Y_t& alt=&Y_t& eeimg=&1&&为趋势项,
&img src=&/equation?tex=%5Cvarepsilon+_t& alt=&\varepsilon _t& eeimg=&1&&和
&img src=&/equation?tex=%5Cmu+_t%0A& alt=&\mu _t
& eeimg=&1&&为无相关性的正态随机变量。&/p&&p&代码如下:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&np.random.seed(100)
x = np.random.normal(0, 1, 500)
y = np.random.normal(0, 1, 500)
X = pd.Series(cumsum(x)) + 100
Y = X + y + 30
for i in range(500):
X[i] = X[i] - i/10
Y[i] = Y[i] - i/10
plot(X); plot(Y);
plt.xlabel(&Time&); plt.ylabel(&Price&);
plt.legend([&X&, &Y&]);
&/code&&/pre&&/div&&img data-rawheight=&392& data-rawwidth=&527& src=&/37ce4ea2e07f7090521cb_b.png& class=&origin_image zh-lightbox-thumb& width=&527& data-original=&/37ce4ea2e07f7090521cb_r.png&&&p&显然,这两组数据都是非平稳的,因为均值随着时间的变化而变化。但这两组数据是具有协整关系的,因为他们的差序列
&img src=&/equation?tex=Y_t-X_t& alt=&Y_t-X_t& eeimg=&1&&是平稳的:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&plot(Y-X);
plt.axhline((Y-X).mean(), color=&red&, linestyle=&--&);
plt.xlabel(&Time&); plt.ylabel(&Price&);
plt.legend([&Y-X&, &Mean&]);
&/code&&/pre&&/div&&img data-rawheight=&397& data-rawwidth=&533& src=&/3bcd823d55ad32f25cb2efd_b.png& class=&origin_image zh-lightbox-thumb& width=&533& data-original=&/3bcd823d55ad32f25cb2efd_r.png&&&p&上图中,可以看出蓝线
一直围绕均值波动。而均值不随时间变化(其实方差也不随时间变化)。&/p&&b&最后小结一下:&/b&如果完全从数学的角度讲清楚协整,会比较复杂,日后的量化课堂会有涉及。我们只是在了解(level-0)的层面上做了一个简单介绍,目的还是让大家更好的将协整与实际应用结合起来。
&p&请参见后面的应用类文章。文中代码可以克隆,自己改改摆弄摆弄:&a href=&/?target=https%3A///post/1731& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&/post/1731&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&br&&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&本文由JoinQuant量化课堂推出,版权归JoinQuant所有,商业转载请联系我们获得授权,非商业
转载请注明出处
&/code&&/pre&&/div&
导语:本文旨在直观地为大家介绍协整的概念,帮助大家理解其基本含义,这个概念提出的动机,以及简单的应用场景。本文由JoinQuant量化课堂推出,难度属于进阶下,理解深度属于level-0。
在官号之后发出,恩
阅读前请准备:
基本的统计概念,理解深度level…
比较喜欢贴在线可以直接执行的代码,以下代码可以对计算一段时间内一定的股票池的相关系数矩阵,并挑出正相关和负相关最强的若干只股票,其结果可以用于【配对交易】策略,见 &a href=&///?target=https%3A//uqer.io/community/share/559c85baf9f06cbd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&优矿&i class=&icon-external&&&/i&&/a&&p&注意:&/p&&ol&&li&计算相关系数矩阵的起止日期和回测的起止日期要注意先后顺序,防止使用未来信息&/li&&li&如果股票数量太多会导致计算时间过长&/li&&/ol&&div class=&highlight&&&pre&&code class=&language-python&&&span class=&kn&&from&/span& &span class=&nn&&heapq&/span& &span class=&kn&&import&/span& &span class=&n&&nlargest&/span&&span class=&p&&,&/span& &span class=&n&&nsmallest&/span&
&span class=&kn&&import&/span& &span class=&nn&&numpy&/span& &span class=&kn&&as&/span& &span class=&nn&&np&/span&
&span class=&c&&# 计算相关性矩阵行情起止时间&/span&
&span class=&n&&start&/span& &span class=&o&&=&/span& &span class=&s&&''&/span&
&span class=&n&&end&/span& &span class=&o&&=&/span& &span class=&s&&''&/span&
&span class=&c&&# 股票池,如果是 n 只则相关系数矩阵含有 n**2 个元素,有效相关系数有 n*(n-1)/2 个&/span&
&span class=&c&&# !!如果设成全A股需要运行很久&/span&
&span class=&n&&stocklist&/span& &span class=&o&&=&/span& &span class=&n&&set_universe&/span&&span class=&p&&(&/span&&span class=&s&&'ZZ500'&/span&&span class=&p&&,&/span& &span class=&n&&start&/span&&span class=&p&&)&/span&
&span class=&c&&# 获取行情&/span&
&span class=&n&&stlen&/span& &span class=&o&&=&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&DataAPI&/span&&span class=&o&&.&/span&&span class=&n&&MktIdxdGet&/span&&span class=&p&&(&/span&&span class=&n&&indexID&/span& &span class=&o&&=&/span& &span class=&s&&'000300.ZICN'&/span&&span class=&p&&,&/span& &span class=&n&&beginDate&/span& &span class=&o&&=&/span& &span class=&n&&start&/span&&span class=&p&&,&/span& &span class=&n&&endDate&/span& &span class=&o&&=&/span& &span class=&n&&end&/span&&span class=&p&&,&/span& &span class=&n&&field&/span&&span class=&o&&=&/span&&span class=&s&&'closeIndex'&/span&&span class=&p&&))&/span& &span class=&c&&# 标准长度&/span&
&span class=&n&&allclsprx&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&s&/span& &span class=&ow&&in&/span& &span class=&nb&&enumerate&/span&&span class=&p&&(&/span&&span class=&n&&stocklist&/span&&span class=&p&&):&/span&
&span class=&n&&z&/span& &span class=&o&&=&/span& &span class=&n&&DataAPI&/span&&span class=&o&&.&/span&&span class=&n&&MktEqudAdjGet&/span&&span class=&p&&(&/span&&span class=&n&&secID&/span& &span class=&o&&=&/span& &span class=&n&&s&/span&&span class=&p&&,&/span& &span class=&n&&beginDate&/span& &span class=&o&&=&/span& &span class=&n&&start&/span&&span class=&p&&,&/span& &span class=&n&&endDate&/span& &span class=&o&&=&/span& &span class=&n&&end&/span&&span class=&p&&,&/span& &span class=&n&&field&/span&&span class=&o&&=&/span&&span class=&s&&'closePrice'&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&z&/span&&span class=&p&&)&/span& &span class=&o&&!=&/span& &span class=&n&&stlen&/span&&span class=&p&&:&/span&
&span class=&n&&stocklist&/span&&span class=&o&&.&/span&&span class=&n&&remove&/span&&span class=&p&&(&/span&&span class=&n&&s&/span&&span class=&p&&)&/span&
&span class=&k&&else&/span&&span class=&p&&:&/span&
&span class=&n&&allclsprx&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&(&/span&&span class=&n&&z&/span&&span class=&p&&[&/span&&span class=&s&&'closePrice'&/span&&span class=&p&&]&/span&&span class=&o&&.&/span&&span class=&n&&tolist&/span&&span class=&p&&())&/span&
&span class=&n&&idxmap&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&n&&i&/span&&span class=&p&&:&/span&&span class=&n&&s&/span& &span class=&k&&for&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&s&/span& &span class=&ow&&in&/span& &span class=&nb&&enumerate&/span&&span class=&p&&(&/span&&span class=&n&&stocklist&/span&&span class=&p&&)}&/span&
&span class=&n&&allclsprx&/span& &span class=&o&&=&/span& &span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&matrix&/span&&span class=&p&&(&/span&&span class=&n&&allclsprx&/span&&span class=&p&&)&/span&
&span class=&c&&# 计算相关系数矩阵,获取相关系数列表,排序&/span&
&span class=&n&&covmat&/span& &span class=&o&&=&/span& &span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&corrcoef&/span&&span class=&p&&(&/span&&span class=&n&&allclsprx&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&o&&=&/span&&span class=&bp&&None&/span&&span class=&p&&,&/span& &span class=&n&&rowvar&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&n&&bias&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&n&&ddof&/span&&span class=&o&&=&/span&&span class=&bp&&None&/span&&span class=&p&&)&/span&
&span class=&n&&d&/span& &span class=&o&&=&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&covmat&/span&&span class=&p&&)&/span&
&span class=&n&&covlist&/span& &span class=&o&&=&/span& &span class=&p&&[]&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&d&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&):&/span&
&span class=&k&&for&/span& &span class=&n&&j&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&n&&d&/span&&span class=&p&&):&/span&
&span class=&n&&covlist&/span&&span class=&o&&.&/span&&span class=&n&&append&/span&&span class=&p&&((&/span&&span class=&n&&covmat&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&,&/span& &span class=&n&&j&/span&&span class=&p&&],&/span& &span class=&n&&i&/span&&span class=&p&&,&/span& &span class=&n&&j&/span&&span class=&p&&))&/span&
&span class=&c&&# 挑出负相关系数与正相关系数最大的各10只股票&/span&
&span class=&n&&neglist&/span& &span class=&o&&=&/span& &span class=&n&&nsmallest&/span&&span class=&p&&(&/span&&span class=&mi&&10&/span&&span class=&p&&,&/span& &span class=&n&&covlist&/span&&span class=&p&&,&/span& &span class=&n&&key&/span&&span class=&o&&=&/span&&span class=&k&&lambda&/span& &span class=&n&&x&/span&&span class=&p&&:&/span&&span class=&n&&x&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&])&/span&
&span class=&n&&neglist&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&nb&&map&/span&&span class=&p&&(&/span&&span class=&n&&idxmap&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&,&/span& &span class=&n&&p&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&:])&/span&&span class=&o&&+&/span&&span class=&p&&[&/span&&span class=&n&&p&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]]&/span& &span class=&k&&for&/span& &span class=&n&&p&/span& &span class=&ow&&in&/span& &span class=&n&&neglist&/span&&span class=&p&&]&/span&
&span class=&n&&poslist&/span& &span class=&o&&=&/span& &span class=&n&&nlargest&/span&&span class=&p&&(&/span&&span class=&mi&&10&/span&&span class=&p&&,&/span& &span class=&n&&covlist&/span&&span class=&p&&,&/span& &span class=&n&&key&/span&&span class=&o&&=&/span&&span class=&k&&lambda&/span& &span class=&n&&x&/span&&span class=&p&&:&/span&&span class=&n&&x&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&])&/span&
&span class=&n&&poslist&/span& &span class=&o&&=&/span& &span class=&p&&[&/span&&span class=&nb&&map&/span&&span class=&p&&(&/span&&span class=&n&&idxmap&/span&&span class=&o&&.&/span&&span class=&n&&get&/span&&span class=&p&&,&/span& &span class=&n&&p&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&:])&/span&&span class=&o&&+&/span&&span class=&p&&[&/span&&span class=&n&&p&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]]&/span& &span class=&k&&for&/span& &span class=&n&&p&/span& &span class=&ow&&in&/span& &span class=&n&&poslist&/span&&span class=&p&&]&/span&
&/code&&/pre&&/div&&br&&a href=&///?target=https%3A//uqer.io/community/share/559ca307f9f06cbf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击Uqer.io在线执行代码&i class=&icon-external&&&/i&&/a&
比较喜欢贴在线可以直接执行的代码,以下代码可以对计算一段时间内一定的股票池的相关系数矩阵,并挑出正相关和负相关最强的若干只股票,其结果可以用于【配对交易】策略,见 注意:计算相关系数矩阵的起止日期和回测的起止日期要注意先后顺序,防止使…
&p&&b&一、简介:&/b&&/p&&p&我是一枚小白,师从零一老师,用师傅的一句话与大家共勉:&时间是不会辜负你的&&/p&&p&&b&二、说明:&/b&&/p&&p&1.Excel Power Query爬取网页数据的强大之处不仅操作简单,而且后期只需要一键刷新即可实时更新&br&&/p&&p&2.中间获取数据的时候,我是根据自己的需求来勾选数据&br&&/p&&p&3.由于贝贝网的特卖宝贝每天都更新,所以会造成您做案例的时候和我做案例中的宝贝会不一样,忽略就好,只要过程没错,案例中的宝贝不影响最终的数据效果&br&&/p&&p&4.按照此方法,可以获取贝贝网其他类目的销售情况,以及其他同类网站的数据&br&&/p&&b&三、具体步骤如下:&/b&&p&(友情提示:操作步骤很详细,看起来有点繁琐,但只要你动手做,其实很简单)&/p&&p&1.打开贝贝官网:&a href=&/?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&img src=&/50/v2-be3e0e602e4d0dc6d66d_b.png& data-rawwidth=&1918& data-rawheight=&1037& class=&origin_image zh-lightbox-thumb& width=&1918& data-original=&/50/v2-be3e0e602e4d0dc6d66d_r.png&&&p&2.对着网页鼠标右键,点击&检查&&/p&&img src=&/50/v2-608a7abcde29b429ed67c7_b.png& data-rawwidth=&1915& data-rawheight=&1043& class=&origin_image zh-lightbox-thumb& width=&1915& data-original=&/50/v2-608a7abcde29b429ed67c7_r.png&&&p&3.点击&手机标志&&/p&&p&&img src=&/50/v2-9ddc0e77f505f9a214aef_b.png& data-rawwidth=&1912& data-rawheight=&296& class=&origin_image zh-lightbox-thumb& width=&1912& data-original=&/50/v2-9ddc0e77f505f9a214aef_r.png&&4.按F5刷新网页,右边列表区点击&Network&,再点击&clear&&br&&/p&&img src=&/50/v2-fdadd3fea7c_b.png& data-rawwidth=&1920& data-rawheight=&814& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/50/v2-fdadd3fea7c_r.png&&&p&5.左边网页点击女装,左边网页往下拉直到底部,右边列表区点击 &JS& 出现数据&br&&img src=&/50/v2-b3d6ab868d8e04578bc68_b.png& data-rawwidth=&1920& data-rawheight=&906& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&/50/v2-b3d6ab868d8e04578bc68_r.png&&6.点击&1-15&,&preview&,&martshows&&br&&/p&&img src=&/50/v2-cb21fd0cb415c8e60eef33_b.png& data-rawwidth=&1909& data-rawheight=&1037& class=&origin_image zh-lightbox-thumb& width=&1909& data-original=&/50/v2-cb21fd0cb415c8e60eef33_r.png&&&p&7.右边列表区中的&1-15&、&2-15&...&17-15&中的数据均为左边网页女装类目中的内容&/p&&p&&img src=&/50/v2-8b314e81acdeffd558fad2_b.png& data-rawwidth=&1838& data-rawheight=&892& class=&origin_image zh-lightbox-thumb& width=&1838& data-original=&/50/v2-8b314e81acdeffd558fad2_r.png&&8.点击&Headers&,复制&1-15&、&2-15&...&17-15&所有的Request URL发现,链接中只有页码在变化,其他都不变,所以页码就可以作为一个变量&br&&/p&&img src=&/50/v2-d35a201cd33ecbadfb0c_b.png& data-rawwidth=&594& data-rawheight=&339& class=&origin_image zh-lightbox-thumb& width=&594& data-original=&/50/v2-d35a201cd33ecbadfb0c_r.png&&&p&9.桌面新建Excel,&数据&,&从表格&,勾选&表包含标题&&/p&&img src=&/50/v2-9e888cc9b0b752bebcea4962_b.png& data-rawwidth=&513& data-rawheight=&574& class=&origin_image zh-lightbox-thumb& width=&513& data-original=&/50/v2-9e888cc9b0b752bebcea4962_r.png&&&p&10.页码列的格式换成文本&/p&&img src=&/50/v2-e95ab26dddd90b1b093c0_b.png& data-rawwidth=&351& data-rawheight=&565& class=&content_image& width=&351&&&p&11.添加列,添加自定义列,复制&1-15&Request URL,点击确定&/p&&p&Json.Document(Web.Contents(&&a href=&/?target=http%3A///martshow/search/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/martsho&/span&&span class=&invisible&&w/search/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&&[页码]&&-15-woman_dress--.html&))&br&&/p&&img src=&/50/v2-e55c13fb3f8fa4d_b.png& data-rawwidth=&950& data-rawheight=&590& class=&origin_image zh-lightbox-thumb& width=&950& data-original=&/50/v2-e55c13fb3f8fa4d_r.png&&&p&12.点击&继续&,&公共&&/p&&img src=&/50/v2-4a452c15dfd7d200f9459e52aae0fb70_b.png& data-rawwidth=&752& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&752& data-original=&/50/v2-4a452c15dfd7d200f9459e52aae0fb70_r.png&&&p&13.展开自定义列,勾&martshows&,点击确定
(取消勾选使用原始列名作为前缀)&/p&&img src=&/50/v2-ace9c58cfc8f82066ddd7_b.png& data-rawwidth=&655& data-rawheight=&642& class=&origin_image zh-lightbox-thumb& width=&655& data-original=&/50/v2-ace9c58cfc8f82066ddd7_r.png&&&p&14.接着展在&martshows&,勾选&brand(品牌)&,&buying_info(正在购买人数)&,&mid(店铺id)&,点击确定&/p&&img src=&/50/v2-0b374b5fc8cc7833298e_b.png& data-rawwidth=&493& data-rawheight=&724& class=&origin_image zh-lightbox-thumb& width=&493& data-original=&/50/v2-0b374b5fc8cc7833298e_r.png&&&p&15.把&mid(店铺id)&的格式改成文本&/p&&img src=&/50/v2-0f5cdd2d87b0b9d18f73dc_b.png& data-rawwidth=&720& data-rawheight=&509& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/50/v2-0f5cdd2d87b0b9d18f73dc_r.png&&&p&16.切换到网页,点击第一个宝贝&/p&&img src=&/50/v2-07e736c30e921902dbb5_b.png& data-rawwidth=&1910& data-rawheight=&1044& class=&origin_image zh-lightbox-thumb& width=&1910& data-original=&/50/v2-07e736c30e921902dbb5_r.png&&&p&17.左边网页往下拉直到底部,右边列表区点击 &JS& 出现数据&/p&&img src=&/50/v2-1fdad73cfd80_b.png& data-rawwidth=&1767& data-rawheight=&920& class=&origin_image zh-lightbox-thumb& width=&1767& data-original=&/50/v2-1fdad73cfd80_r.png&&&p&18.点击&-20...&,&preview&,&martshow_items&&/p&&img src=&/50/v2-ef44e66e5c235d_b.png& data-rawwidth=&1753& data-rawheight=&920& class=&origin_image zh-lightbox-thumb& width=&1753& data-original=&/50/v2-ef44e66e5c235d_r.png&&&p&19.列表区中&1-20&...&17-20&的数据均为左边网页中的内容&br&&/p&&p&(左边网页里的内容,能在右边列表区中找到,此URL就是我们要找的URL)&br&&/p&&img src=&/50/v2-6a3b2bf877f62ad03a739_b.png& data-rawwidth=&1633& data-rawheight=&873& class=&origin_image zh-lightbox-thumb& width=&1633& data-original=&/50/v2-6a3b2bf877f62ad03a739_r.png&&&p&20.点击Header,复制Request URL&br&&/p&&p&&img src=&/50/v2-901d77f1206e0bde33717_b.png& data-rawwidth=&1552& data-rawheight=&806& class=&origin_image zh-lightbox-thumb& width=&1552& data-original=&/50/v2-901d77f1206e0bde33717_r.png&&21.切换到excel,把复制好的URL复制到&自定义添加列&中去&br&&/p&&p&Json.Document(Web.Contents(&&a href=&/?target=http%3A///martshow/item/v3/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/martsho&/span&&span class=&invisible&&w/item/v3/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&&[mid]&&-1-20-hot-0--0-0--0.html&))&br&&/p&&p&用&mid(店铺id)&替换&263710&&br&&/p&&img src=&/50/v2-27ffa2f82e41cdae547c2_b.png& data-rawwidth=&1303& data-rawheight=&639& class=&origin_image zh-lightbox-thumb& width=&1303& data-original=&/50/v2-27ffa2f82e41cdae547c2_r.png&&&p&22.展开&自定义列&,勾选&martshow_items&,点击确定&br&&/p&&p&(取消勾选使用原始列名作为前缀)&br&&/p&&img src=&/50/v2-9bfeb2ab081b_b.png& data-rawwidth=&719& data-rawheight=&730& class=&origin_image zh-lightbox-thumb& width=&719& data-original=&/50/v2-9bfeb2ab081b_r.png&&&p&23.接着展开&martshow_items&,勾选&iid(商品id)&,&price(折扣价)&,&price_ori(原价)&,&sale_tip(折扣)&,点击确定&br&&/p&&p&&img src=&/50/v2-0f4ac9c1446cef5ce19cf5cc539f5433_b.png& data-rawwidth=&798& data-rawheight=&715& class=&origin_image zh-lightbox-thumb& width=&798& data-original=&/50/v2-0f4ac9c1446cef5ce19cf5cc539f5433_r.png&&24.把&iid(商品id)&的格式改成文本&/p&&img src=&/50/v2-c84ee89db_b.png& data-rawwidth=&1082& data-rawheight=&583& class=&origin_image zh-lightbox-thumb& width=&1082& data-original=&/50/v2-c84ee89db_r.png&&&p&25.切换到网页,点击第一个宝贝&/p&&p&&img src=&/50/v2-34e79133b80bfb6eb290bf2fedbc9da0_b.png& data-rawwidth=&1290& data-rawheight=&812& class=&origin_image zh-lightbox-thumb& width=&1290& data-original=&/50/v2-34e79133b80bfb6eb290bf2fedbc9da0_r.png&&26.左边网页往下拉直到底部,右边列表区&JS&出现数据&/p&&p&&img src=&/50/v2-3b502da7387fb92dfd8c122_b.png& data-rawwidth=&1330& data-rawheight=&819& class=&origin_image zh-lightbox-thumb& width=&1330& data-original=&/50/v2-3b502da7387fb92dfd8c122_r.png&&27.点击&183682...&,&preview&,列表区的数据均为左边网页中的内容&br&&/p&&p&(左边网页里的内容,能在右边列表区中找到,此URL就是我们要找的URL)&br&&/p&&img src=&/50/v2-87eafe457e3d9d0bd9617_b.png& data-rawwidth=&1718& data-rawheight=&876& class=&origin_image zh-lightbox-thumb& width=&1718& data-original=&/50/v2-87eafe457e3d9d0bd9617_r.png&&&p&28.点击Header,复制Request URL&br&&/p&&p&&img src=&/50/v2-ee44b50da8_b.png& data-rawwidth=&1552& data-rawheight=&819& class=&origin_image zh-lightbox-thumb& width=&1552& data-original=&/50/v2-ee44b50da8_r.png&&29.切换到excel,把复制好的URL复制到&自定义添加列&中&br&&/p&&p&Json.Document(Web.Contents(&&a href=&/?target=http%3A///item/detail/new/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/item/de&/span&&span class=&invisible&&tail/new/&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&&[iid]&&.html&))&br&&/p&&p&用&iid(商品id)&替换&&&br&&/p&&img src=&/50/v2-af4879cdcda3d_b.png& data-rawwidth=&1308& data-rawheight=&732& class=&origin_image zh-lightbox-thumb& width=&1308& data-original=&/50/v2-af4879cdcda3d_r.png&&&p&30.展开&自定义列&,勾选&sold_num(销量)&,点击确定&/p&&p&(取消勾选使用原始列名作为前缀)&br&&/p&&img src=&/50/v2-338a580ee0b7e397401c_b.png& data-rawwidth=&1148& data-rawheight=&726& class=&origin_image zh-lightbox-thumb& width=&1148& data-original=&/50/v2-338a580ee0b7e397401c_r.png&&&p&31.点击&开始&,&关闭并上载至...&&br&&/p&&img src=&/50/v2-18eabef5de2_b.png& data-rawwidth=&1118& data-rawheight=&613& class=&origin_image zh-lightbox-thumb& width=&1118& data-original=&/50/v2-18eabef5de2_r.png&&&p&32.加载到&表&,点击确定&/p&&img src=&/50/v2-afe343dfdb94ef75ed5ef_b.png& data-rawwidth=&460& data-rawheight=&425& class=&origin_image zh-lightbox-thumb& width=&460& data-original=&/50/v2-afe343dfdb94ef75ed5ef_r.png&&&p&33.至此,贝贝网女装销售数据获取成功!&/p&&img src=&/50/v2-eea3dab2d4ed_b.png& data-rawwidth=&722& data-rawheight=&402& class=&origin_image zh-lightbox-thumb& width=&722& data-original=&/50/v2-eea3dab2d4ed_r.png&&&p&(作者微信:muyou1990)&/p&
一、简介:我是一枚小白,师从零一老师,用师傅的一句话与大家共勉:"时间是不会辜负你的"二、说明:1.Excel Power Query爬取网页数据的强大之处不仅操作简单,而且后期只需要一键刷新即可实时更新 2.中间获取数据的时候,我是根据自己的需求来勾选数据 3.…
放几个金融方面的练手项目&br&&a href=&///?target=https%3A//uqer.io/community/share/56fa3efce50e04& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员学量化投资(一):买入卖出&i class=&icon-external&&&/i&&/a&&p&&a href=&///?target=https%3A//uqer.io/community/share/56fab& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员学量化投资(二):指价建仓 &i class=&icon-external&&&/i&&/a&&br&&/p&&p&&a href=&///?target=https%3A//uqer.io/community/share/56fabc7e51001& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员学量化投资(三):区间内低买高卖&i class=&icon-external&&&/i&&/a&&br&&/p&&p&&a href=&///?target=https%3A//uqer.io/community/share/56fbb4dd228e5b1f861a8e14& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员学量化投资(四):分析收益率自动追涨&i class=&icon-external&&&/i&&/a&&br&&/p&&p&&a href=&///?target=https%3A//uqer.io/community/share/56fbecf8a1a8eb0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员学量化投资(五):移动平均线之金叉和死叉 &i class=&icon-external&&&/i&&/a&&br&&/p&&p&&a href=&///?target=https%3A//uqer.io/community/share/e5b& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员学量化投资(六):成交量之缩量增量&i class=&icon-external&&&/i&&/a&&br&&/p&&p&&a href=&///?target=https%3A//uqer.io/community/share/57124fae228e5b827e7f5491& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员学量化投资(七):量价八阶律的简单实现&i class=&icon-external&&&/i&&/a&&/p&&p&&a href=&///?target=https%3A//uqer.io/community/share/54ffd96ef9f06c276f651aac& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&量化分析师的Python日记【第5天:数据处理的瑞士军刀pandas】&i class=&icon-external&&&/i&&/a&&br&&/p&&p&&a href=&///?target=https%3A//uqer.io/community/share/f06c& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&量化分析师的Python日记【第6天:数据处理的瑞士军刀pandas下篇 &i class=&icon-external&&&/i&&/a&&br&&/p&&a href=&///?target=https%3A//uqer.io/community/share/e5b90c1a2e2c1& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Python机器学习-基于 SVM 的市场形态预测器研究&i class=&icon-external&&&/i&&/a&&p&&a href=&///?target=https%3A//uqer.io/community/share/577c4dfc931da0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&python机器学习算法速查&i class=&icon-external&&&/i&&/a&&/p&
放几个金融方面的练手项目
爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔...&br&&br&Day 1&br&小莫想要某站上所有的电影,写了标准的爬虫(基于HttpClient库),不断地遍历某站的电影列表页面,根据 Html 分析电影名字存进自己的数据库。&br&这个站点的运维小黎发现某个时间段请求量陡增,分析日志发现都是 IP(1.1.1.1)这个用户,并且 useragent 还是 JavaClient1.6 ,基于这两点判断非人类后直接在Nginx 服务器上封杀。&br&&br&Day 2&br&小莫电影只爬了一半,于是也针对性的变换了下策略:1. useragent 模仿百度(&Baiduspider...&),2. IP每爬半个小时就换一个IP代理。&br&小黎也发现了对应的变化,于是在 Nginx 上设置了一个频率限制,每分钟超过120次请求的再屏蔽IP。 同时考虑到百度家的爬虫有可能会被误伤,想想市场部门每月几十万的投放,于是写了个脚本,通过 hostname 检查下这个 ip 是不是真的百度家的,对这些 ip 设置一个白名单。&br&&br&Day 3&br&小莫发现了新的限制后,想着我也不急着要这些数据,留给服务器慢慢爬吧,于是修改了代码,随机1-3秒爬一次,爬10次休息10秒,每天只在8-12,18-20点爬,隔几天还休息一下。&br&小黎看着新的日志头都大了,再设定规则不小心会误伤真实用户,于是准备换了一个思路,当3个小时的总请求超过50次的时候弹出一个验证码弹框,没有准确正确输入的话就把 IP 记录进黑名单。&br&&br&Day 4&br&小莫看到验证码有些傻脸了,不过也不是没有办法,先去学习了图像识别(关键词 PIL,tesseract),再对验证码进行了二值化,分词,模式训练之后,识别了小黎的验证码(关于验证码,验证码的识别,验证码的反识别也是一个恢弘壮丽的斗争史,这里先不展开....),之后爬虫又跑了起来。&br&小黎是个不折不挠的好同学,看到验证码被攻破后,和开发同学商量了变化下开发模式,数据并不再直接渲染,而是由前端同学异步获取,并且通过 js 的加密库生成动态的 token,同时加密库再进行混淆(比较重要的步骤的确有网站这样做,参见微博的登陆流程)。&br&&br&Day5&br&混淆过的加密库就没有办法了么?当然不是,可以慢慢调试,找到加密原理,不过小莫不准备用这么耗时耗力的方法,他放弃了基于 HttpClient的爬虫,选择了内置浏览器引擎的爬虫(关键词:PhantomJS,Selenium),在浏览器引擎中js 加密脚本算出了正确的结果,又一次拿到了对方的数据。&br&小黎:.....&br&&br&爬虫与发爬虫的斗争还在继续。&br&不过实际应用时候,一般大家做到根据 IP 限制频次就结束了,除非很核心的数据,不会再进行更多的验证,毕竟工程的问题一半是成本的问题。&br&&br&至于高效部分,一些 Tips:&br&1.尽量减少请求次数,能抓列表页就不抓详情页&br&2.不要只看 Web 网站,还有 App 和 H5,他们的反爬虫措施一般比较少&br&3.如果真的对性能要求很高,可以考虑多线程(一些成熟的框架如 scrapy都已支持),甚至分布式&br&&br&另外,想深入研究爬虫/反爬虫的同学,可以把简历发过来: shenyubao&At&&a href=&///?target=http%3A//& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& ,本广告长期有效。&br&&br&====&br& 修改几处 spider 拼写错误,感谢 &a data-hash=&70a7fca8e7f979a45be3c& href=&///people/70a7fca8e7f979a45be3c& class=&member_mention& data-tip=&p$b$70a7fca8e7f979a45be3c& data-hovercard=&p$b$70a7fca8e7f979a45be3c&&@Danilo&/a&
爬虫(Spider),反爬虫(Anti-Spider),反反爬虫(Anti-Anti-Spider),这之间的斗争恢宏壮阔... Day 1 小莫想要某站上所有的电影,写了标准的爬虫(基于HttpClient库),不断地遍历某站的电影列表页面,根据 Html 分析电影名字存进自己的数据库。 这个站点的运维…
我是来吐槽最高票的@&a href=&/people/leaf-mohanson& class=&internal&&Leaf Mohanson&/a&&br&&br&虽然学习的确应该追求本质,但是如果一个学习过程太过冗长又没有实质性进展,很容易让人失去继续学习下去的动力。&br&&br&比如说,验证码破解(一般不谈黑产链的活,下不为例),居然推荐了pandas和numpy。&br&&br&如果题主没有相关的基础知识,那么题主需要先学习线性代数、统计和概率、图像识别基础、机器学习基础,然后再来看你推荐的这个K近邻算法,发现原来还需要一堆训练集,好不容易折腾完了之后又发现,卧槽,原来这算法时空复杂度这么高……&br&&br&那么我的推荐是,使用 Google 的 OCR 开源库 tesseract,对应的Python包是pytesser,如果只是做简单(没有数字重叠)的数字识别,那么仅需调用接口就能完成识别。&br&&br&然而关键在于,这压根就应该属于图像识别而不属于爬虫进阶嘛!&br&&br&----------------------------------------------&br&&br&在我看来,不管用什么语言写爬虫,进阶的第一门课一定得是学会自己抓包,分析请求和返回数据。这当中会有一些字段恶心到你,比如通过base64或者md5加密,在模拟登陆验证中通常还会遇到RSA算法。如果你说你懒得学,那么上大杀器&b&Selenium&/b&,但是你要忍受它对系统资源的占用(往往要启动浏览器和多个标签页)和不那么快速的爬取速度。&br&&br&针对一些网站的爬取就像是在玩攻防,网站设置了种种反抓取的坑等着你掉进去。这时候你要学会维护好自己的User-Agent,维护好自己的Cookie池,维护好自己的代理IP池,添加恰当的Host和Referer,以让对方服务器觉得这一切看起来都跟真的一模一样,那么你的爬虫开发能力,已经入门了。&br&&br&到此为止,这些知识还和 Python 没有半毛关系,但你知道了要干什么之后,再去搜 Python 相关的工具库,你就会发现原来 Requests 可以轻松构造一个包含自定义 payload 和 headers 的 post 请求;你就会发现原来 Scapy 中可以使用TCP包注入来伪造IP,还能玩SYN FLOOD拒绝服务攻击(误)……&br&&br&所以说,你要做的是&b&爬虫进阶&/b&,再用 Python 去寻找一个快捷的实现途径,然后就会发现,还是 Python 大法好,不愧为黑客第一语言。
我是来吐槽最高票的@ 虽然学习的确应该追求本质,但是如果一个学习过程太过冗长又没有实质性进展,很容易让人失去继续学习下去的动力。 比如说,验证码破解(一般不谈黑产链的活,下不为例),居然推荐了pandas和numpy。 如果题主没有相关的基…
已有帐号?
无法登录?
社交帐号登录
3665 人关注
668 条内容
653 人关注
392 条内容
892 人关注
208 条内容
17481 人关注
377 条内容}

我要回帖

更多关于 天怒二觉第三步 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信