特许金融分析师~1.0
近年来,由于宏观经济低迷和相关专业人才过剩,金融专业在就业等方面的竞争压力加剧。 考虑到本专业学生对计算机相关知识,尤其是编程语言深入学习的需求,CFA编辑组于上周日11月8日晚组织了一次学习会。 这项研究是由18级CFA专业人士潘旭智进行的。
>>>>>>>>>>
NO.01 这是什么?
它是一种跨平台的计算机编程语言,也是一种集可解释性、编译性、交互性和面向对象于一体的高级脚本语言。
为什么学习
1.职业社会形态
对于金融业来说,受去杠杆影响,行业规模大幅下降; 同时,随着技术的不断发展,一些岗位对人才的需求量有所减少。 在人才市场供不应求的今天,学习这样一门硬核技能,有助于金融专业在激烈的社会竞争中脱颖而出。
2.首要原则
作为计算机科学的一部分,它是一门应用科学。 它可以通过高度抽象现实生活中的常见现象来解决实际问题。 通过学习算法和实际应用,帮助解决各行各业遇到的问题。
>>>>>>>>>>
部署NO.
它指的是一个开源发行版,其中包括 conda 等 180 多个科学包及其依赖项。 它在全球拥有超过 1900 万个用户版本,是开发、测试和独立培训的行业标准。
1.清华大学镜像下载:
2、部署环境
部署环境时,需要添加三个路径到环境变量中。
>>>>>>>>>>
实验室号
起源于,它是代码演示、数据分析、可视化、教学使用的好工具(也是其他语言如R、Julia、Node等的内核),这极大地促进了它的日益普及和普及。在人工智能领域处于领先地位。 影响。
Lab 是一个提供更好用户体验的扩展。 例如,您可以在一个浏览器页面上同时打开和编辑多个文件和终端,并支持预览和编辑更多类型的文件,例如代码文件、文档、json、yml。 、csv、各种格式的图片、vega 文件(一种使用 json 定义图表的语言)和(使用 json 表示地理对象),还可以使用 Lab 连接到 Drive 等云存储服务,这大大提高了生产力。
我们已经安装了 Lab 并将其随身携带。 无需再次安装。 如果需要的话可以直接如图输入lab和cmd打开。
输入“lab”后按回车键开始运行。 如果加载过程出现卡顿,没有弹出实验网页,可以反复按Enter键。 如果没有弹出网页,您也可以选择打开浏览器,在地址栏输入。 127.0.0.1:8888(英文输入法) 进入lab(有时需要输入token,值在界面“token=”处)。
启动成功后,打开实验室的界面不能关闭,否则实验室将无法运行。 需要注意的是,我们可以打开多个终端来启动多个实验或安装包。
启动后你会发现左边lab目录最外层只能到C盘>用户位置,所以无法访问你其他硬盘的资源。 此时,用户可以进入指定目录,按住shift+鼠标右键,会显示“在此处打开窗口”。 打开后输入“lab”即可使用。 另外,Mac和用户都可以在命令行界面下使用“cd目录名”来更改目录(用户在磁盘上执行cd命令之前需要输入例如“D:”切换到D盘)。
然后我们学习了Lab的一些知识,包括布局框架、新建、新建文件和上传,并熟悉了一些常用的快捷键,以加快我们的效率。
>>>>>>>>>>
实验室
使用介绍:
示例:在桌面(即基础环境)新建一个文件
重启内核相当于清除了之前所有运行的内容。 “In[ ]”括号中的数字将再次从“1”开始。 因此,内核重启后,需要重新导入包并运行之前需要的内容。
文件重命名:
方法一:在头文件窗口右键单击
方法二:左键单击左侧文件目录
显示代码行数(方便调试bug)
调整导出文件格式。 某些格式可能需要安装插件:
更改背景颜色:
>>>>>>>>>>
NO.04 快捷键介绍
通过使用这些快捷键,我们基本可以不用鼠标就完成我们程序的编写。
1. 在非编辑模式下操作单元格
X切V贴
Z 返回B,输入框向下插入
A 将输入框向上插入
D 删除输入框
Shift+M 合并选定的单元格
上下键选择单元格
2. 在编辑模式下操作单元格内容
Shift+Ctrl+ -(减号键)拆分单元格
查看被误删除的历史代码
和其他常规编辑快捷方式
3.两种模式均可操作
F11浏览器全屏
Ctrl+B 隐藏左栏
Ctrl+Enter 执行代码但不会自动移至下一个输入框
Enter+Shift 执行代码并自动移动到下一个输入框
Enter 进入编辑模式
Esc退出编辑模式(进入非编辑模式)
然后我们输入了经典的“hello world”,迈出了编写程序的第一步。 同时,仅仅通过这个经典而简单的说法,我们就可以看到它相对于其他主流编程语言的巨大优势:结构简单、上手容易、学习成本低。
同时,我们应该注意:
如果出现bug,运行时会弹出如下红框。 您可以查找错误原因,或者将bug复制到浏览器中并搜索网络上是否有此问题的答案。 调试过程中,注意解决错误的根本原因(如下图阴影区域的错误),并利用互联网查找资源。 国内有CSDN、简书等技术交流网站。 一般来说,你遇到的bug以前已经被别人发现过。 解决问题的有效方法是冷静下来并清楚地解释自己的症状,并学会提出问题。
遇到不熟悉的函数时,将光标移动到函数后面的括号处,先按住Shift键,然后按Tab键(有时需要按Tab键两次),就会弹出如图所示的框,包含该功能的详细介绍。
>>>>>>>>>>
NO.常用包介绍
>>>>>>>>>>
常用于
科学计算工具包
我们最熟悉的科学计算工具可能是它集数值计算、可视化工具和交互于一体。 不幸的是,它是一个商业产品。 在开源方面,除了GNU试图做出类似的工具包之外,这些工具包的集合也可以替代相应的功能:NumPy+SciPy++。 同时这些工具包,尤其是NumPy和SciPy,也是很多文本处理&机器学习&数据挖掘工具包的基础,非常重要。
1.numpy:
Numpy 是科学计算的基础库。 主要提供高性能的N维数组实现和计算能力。 它还提供了与C/C++等其他语言集成的能力。 此外,它还实现了一些基本的数学算法,例如线性代数。 相关、傅里叶变换和随机数生成等。NumPy 提供了两个基本对象:(N-array) 和 ufunc()。 它是一个存储单一数据类型的多维数组,ufunc是一个可以处理数组的函数。 NumPy 通常与 SciPy ( ) 和(绘图库)一起使用。
官方主页:
2.SciPy:工具
《SciPy 是一个开源算法库和数学工具包。SciPy 包含优化、线性代数、积分、插值、特殊函数、快速傅立叶变换、信号处理和图像处理、常微分方程求解以及其他科学工程中常用的计算模块其功能与软件、Numpy、GNU类似。Numpy和Scipy经常结合使用,大多数机器学习库都依赖这两个模块。 ---引自《机器学习库》
官方主页:
3.
的灵感来自于。 它是一种广泛使用的面向过程的语言和工具,在数据绘制领域利用函数调用。 它有一套完全模仿的函数形式的绘图接口。 在里面 。 ,这套功能接口方便用户过渡到包。 它是最著名的绘图图书馆。 它提供了一整套类似的命令API,非常适合交互式绘图。 并且它还可以轻松地用作绘图控件并嵌入到 GUI 应用程序中。 它可以与shell配合使用,提供不亚于的绘图体验。
要在控制台使用,可以使用--命令启动控制台程序; 如果你想在控制台中使用它,只需在开头插入 % magic 命令即可。
特殊的交互模式是为了特殊的目的而提供的。 该模式有两个优点。 一是它提供了非阻塞的绘制操作,二是不需要显式调用show()方法来显示绘制的图片。
官方主页:
>>>>>>>>>>
机器学习
& 数据挖掘常用工具包
2.1 - 学习:在
第一个是-learn,-learn是一个基于NumPy、SciPy的开源机器学习工具包,主要涵盖分类、回归和聚类算法,比如SVM、逻辑回归、朴素贝叶斯、随机森林、k-means等算法,代码和文档都非常好,已经在很多项目中使用了。 比如我们熟悉的NLTK中。 -learn提供一致的调用接口。 它基于Numpy、scipy等数值计算库,提供高效的算法实现。 总结起来,-learn工具包有以下优点。
1)文档完整:官方文档完整且更新及时。
2)接口简单易用:为所有算法提供一致的接口调用规则,无论是KNN、K-Means还是PCA。
3)算法全面:覆盖主流机器学习任务的算法,包括回归算法、分类算法、聚类分析、数据降维处理等。
缺点是-learn不支持分布式计算,不适合处理非常大的数据。
官方主页:
2.2:数据
它是一个强大的时间序列数据处理工具包,基于Numpy构建,比Numpy使用更简单。 最初是为了分析金融数据而开发的,现在已广泛应用于数据分析领域。 ,最基本的数据结构就是用它来表达一行数据,可以理解为一维数组。 另一个关键的数据结构是它表示一个二维数组。
它基于NumPy而开发,主要用于数据分析和数据可视化。 它的数据结构与R语言中的data.frame非常相似,特别是对于时间序列数据,它有自己的一套分析机制。 有一本《for Data》,作者是NumPy的主要开发者,介绍了NumPy中的相关功能,数据可视化、数据清洗与处理、时间数据处理等,案例包括金融股票数据挖掘等。 ,这相当不错。
官方主页:
2.3mlpy –
Mlpy是基于NumPy/SciPy的机器学习模块,是一个扩展应用程序。 其中包含许多机器学习算法。
官方主页:
2.4
“(-Based, and)是一个机器学习模块,旨在为机器学习任务提供灵活、适应性强、功能强大的机器学习算法。顾名思义,它包括神经网络、强化学习(以及两者的组合) 、无监督学习、进化算法等,由于当前很多问题需要处理连续的状态和行为空间,所以必须使用函数逼近(如神经网络)来处理高维数据,以神经网络为核心,所有的训练例如,方法使用神经网络。”
2.5
”是一个用于定义、优化和模拟数学表达式计算的库,用于高效解决多维数组计算问题。特点:与Numpy紧密集成;高效的数据密集型GPU计算;高效的符号微分运算;高速和稳定的优化;动态生成C代码;广泛的单元测试和自我验证,从2007年开始广泛应用于科学计算,让深度学习模型的构建变得更加简单,可以快速实现多个模型。
2.6 NLTK
NLTK()是一个自然语言处理模块,包括一系列字符处理和语言统计模型。 NLTK常用于学术研究和教学,应用领域包括语言学、认知科学、人工智能、信息检索、机器学习等。NLTK提供50多个语料库和词典资源,文本处理库包括分类、分词分段、词干提取、语法分析和语义推理。 可以在Mac OS X和Linux平台上稳定运行。
项目主页:
2.7
“它建立并部分依赖于-learn,目前正在开发中,将能够处理矢量、图像、视频等数据,并提供MLP、RBM和SDA等深度学习模型。”
官方主页:
>>>>>>>>>>
网络爬虫工具
真正的项目必须从获取数据开始。 无论文本处理、机器学习、数据挖掘,都需要数据。 除了通过某些渠道购买或下载的专业数据外,往往还需要自己爬取数据。 这时候,爬虫就显得尤为重要。 幸运的是,提供了一批非常重要的数据。 一个好的网络爬虫工具框架不仅可以爬取数据,还可以获取和清洗数据。 以下是一些网络爬虫工具:
3.1
它很有名。 相信很多同学都听说过。 课程地图中的很多课程都依赖于抓取。 这方面有很多介绍性文章。 推荐早年的一篇文章:《轻松定制网络爬虫》,万古长青。 。
官方主页:
代码页:
3.2 汤
客观地说,Soup并不完全是一套需要配合使用的爬虫工具,而是一套HTML/XML数据分析、清洗和获取工具。
官方主页:
3.3-鹅
Goose 最初是用 Java 编写的,后来用 Scala 重写。 这是一个 Scala 项目。 -Goose被重写并依赖于Soup。
>>>>>>>>>>
文本处理工具
获得文本数据后,根据任务需要进行基本的文本处理。 例如,对于英语,需要基本的文本处理。 对于中文,需要通用中文分词。 进一步地,无论英文还是中文,也可以进行词性标注。 、句法分析、关键词提取、文本分类、情感分析等。这方面有很多优秀的工具包,尤其是英语领域。
4.1 NLTK —
从事自然语言处理的同学会经常接触NLTK。 我推荐两本书:
一种是官方的“with”,主要介绍NLTK中的函数用法,也附带了一些知识;
另一篇是“Text with NLTK 2.0”。 这本书比较深入一点,会涉及到NLTK的代码结构。 还会介绍如何定制自己的语料库和模型等,还是蛮不错的。
官方主页:
4.2
由比利时安特卫普大学CLiPS实验室出品,客观地说,它不仅仅是一套文本处理工具,它也是一套网络数据挖掘工具,包括数据爬取模块(包括,维基百科的API,以及爬虫程序)和HTML分析器)、文本处理模块(词性标注、情感分析等)、机器学习模块(VSM、聚类、SVM)和可视化模块等。可以说这套逻辑也是组织的逻辑本文的逻辑,不过这里暂时放在文本处理部分。
官方主页:
4.3: 文本
是一个非常有趣的文本处理工具包。 它实际上是基于上面两个工具包NLKT和NLKT进行封装的(在NLTK和NLTK的巨人上,并与两者一起玩)。 它还提供了许多文本处理功能的接口,包括词性。 标注、名词短语提取、情感分析、文本分类、拼写检查等,甚至还有翻译和语言检测,但这都是基于API的,对调用次数有限制。 官方主页:
4.4 MBSP 为
MBSP来自比利时安特卫普大学CLiPS实验室。 提供分词、分句、词性标注、语法分析等基本文本处理功能。
官方主页:
4.5:主题
是一个相当专业的主题模型工具包。
官方主页:
4.6 .py:独立的
语言检测是一个非常有趣的话题,但也相对成熟。 这方面有很多解决方案,也有很多好的开源工具包。 不过这个工具包还是值得推荐的。 目前它支持 97 种语言的检测,并提供许多易于使用的功能,包括启动建议、通过 json 调用其 API 以及自定义和训练自己的语言检测模型的能力。 真可谓“麻雀虽小,五脏俱全”。 。
4.7 结巴
jieba是最好的中文分词组件“jieba”(“到”)文本:构建为最好的词。
Word 是一款国产文本处理工具包。 其功能包括支持三种分词模式(精准模式、全量模式、搜索引擎模式)、支持繁体中文分词、支持自定义词典等,是目前非常优秀的中文分词解决方案。 计划。
三剑客(+Numpy+)的安装:
我们开始尝试下载并安装。 内置了很多常用的包,包括上面三个。 不过,如果以后需要安装新的包,仍然需要通过pip来安装,如下图所示。 然而,由于一些众所周知的原因,直接运行它会下载缓慢。 。
为了方便国内用户使用,很多机构都在自己的镜像源中存储了这些包的副本。 安装时,国内用户可以通过 pip -i 镜像源名称直接下载需要下载的包名。 如果要卸载包,输入pip可以使用要卸载的包的名称。 (numpy是内置包,无需重新下载)
下面以使用清华镜像源下载/卸载为例:
下载包:
卸载包:
其他获取包的方法有:
清华:
阿里云:
中国科学技术大学
华中科技大学:
山东理工大学:
豆瓣:
相关包下载完成后,需要将扩展包导入到实验室中(pd、np、plt是这三个包的常用缩写)。 导入后,在编写代码的过程中,可以使用as语句来让我们传递包缩写。 打电话。
安装好之后,我们就用它来解决一些数据问题。 通过具体的学习场景,我们可以亲身体验语法风格和表达方式、常用功能和容器,从而促进后续的学习。
>>>>>>>>>>
不。
它是一个强大的时间序列数据处理工具包,基于Numpy构建,比Numpy使用更简单。 最初是为了分析金融数据而开发的,现在已广泛应用于数据分析领域。 ,最基本的数据结构就是用它来表达一行数据,可以理解为一维数组。 另一个关键的数据结构是它表示一个二维数组。
适合处理以下类型的数据:
1.类似于SQL或Excel表的具有异构列的表格数据;
2.有序和无序(非固定频率)时间序列数据;
3.带有行和列标签的矩阵数据,包括同质或异质数据;
4.任何其他形式的观察或统计数据集在数据转入数据结构时不需要预先标记。
我们通过调用库学习了数据表的标注、行、列、值的输出,按字段计数,以及切片的一些操作; 我们还掌握了如何调用和使用numpy中的常用函数来创建等差。 数组,用于初步练习。
函数格式 np.([start,]stop,[step,]dtype=None)
start:起始值; 可以忽略不写,默认从0开始
stop:结束值; 生成的元素不包含最终值
步长:步长大小; 可以忽略不写,默认步长为1
dtype:默认为None,设置显示元素的数据类型
>>>>>>>>>>
本次讲座由18年级潘绪智主持,是编辑团队在教与学模式上的创新尝试,也是费曼学习方法的积极实践。 在教学过程中,演讲者也会发现自己知识体系的不足,从而真正达到教与学的目的。
作家 谢正林 | 陈思润 | 王秋仪
编辑 王秋怡
审稿人 丁世奇
○
南京审计大学CFA
○
促进CFA学术交流,汇聚南深CFA校友资源