网页下载
爬虫的第一步是向网页发起模拟请求,一般来说模拟请求的可以借助Python中的urllib模块以及requests模块,其中requests模块是对urllib模块的一个封装,从实用性的角度出发,一般来说我们更建议使用requests模块 request.get发起网页请求 requests库调用是requests.get方法传入url和参数,返回的对象是Response对象,打印出来是显示响应状态码。 Response对象比较重要的三个属性: text:unicode 型的数据,一般是在网页的header中定义的编码形式, content返回的是bytes,二进制型的数据。 json也可以返回json字符串。 如果想要提取文本就用text,但是如果你想要提取图片、文件等二进制文件,就要用content,当然decode之后,中文字符也会正常显示。 修改头文件(Headers) pcUserAgent = {"safari 5.1 – MAC":"User-Agent:Mozilla/5.0 (Macintosh; U; Intel Ma...
随机森林
算法步骤:随机森林由LeoBreiman于2001年提出,它通过自助法(Bootstrap)重采样技术,从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练样本集合。 然后根据自助样本集生成k个分类树,这k个分类树组成随机森林。 新数据的分类结果按各分类树投票多少形成的分数而定。 采样与完全分裂 两个随机采样的过程,Random Forest对输入的数据要进行、列的采样。 行采样得到不同的训练数据来训练模型,列采样则主要涉及到一个随机特征选择的问题(见后文) 对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。 完全随机的取样方式使得每棵树都有过学习的可能,但是因为数量足够多使得最后的模型过学习的可能性大大降低(集成学习的优势) 随机森林在最后输出时采取的是Majority-voting。 随机属性选择 随机森林的基学习器虽然是决策树,但是随机森林与决策树的不同之处在于,决策树是在所有的属性上进行搜索,而随机森林的每一棵树是在一个随机的属性子集上进行搜索(可能会从属性数目为M的集合中随机...
特征工程
机器学习中的特征工程到底是在说什么
help大法
对Python中出现的各种help方法做一个简单介绍,也作为一个速查手册来使用。
量化交易入门
量化投资没有确切的定义,它泛指通过数学分析、挖掘价格波动规律,或者通过对相关宏观经济、财务数据、量价关系、资金交易等数据进行建模,寻找数据之间的关系,以获得稳定利润为目标,持续计算生成定量化的投资信号,并通过计算机严格执行。 如何得到一条稳步上升的资金曲线 强壮稳定的投资逻辑:基于对交易市场的了解和市场的特性的认识提出各种假设,构建投资逻辑。这个过程中可以以金融行业的服务研究报告,但是要清醒地、有针对性性地看待这些报告 相信时间的作用:效果再好的资金曲线在某个局部也会出现各种波动,这是不可避免的,个人投资者相较而言能够忍受更长的回撤期,没有固定的开发成本,在建立好自己的模型后,可以充分相信模型,相信时间会证明我们的模型 多资产多策略配置: 对冲风险更高收益 技术信息理论的三大假设 市场行为包容消化一切信息 市场运行以趋势方式演变 历史会重演(我们可以通过历史数据来推断未来走势 绩效评估指标 绩效指标也被称为风险指标,它们也是量化投资的基石,正因为有这些指标我们可以横向对比不同模型。 Annualized Returns策略年化收益率 \begin{equation} ...
博客字体配置
更改字体 更改字体主要通过引入css实现,具体的代码如下所示: @font-face{font-family: '字体名字';src: url('/font/文件名字.ttf') format("truetype");}body { font-family: '字体名字';} 其中@font-face相当于创建一个字体族,然后下边body部分是在应用字体族,那个名字其实就是在前边创建的字体的名字。 通过在网络上的查找,我首先选择使用的是Robot字体,这个字体族写的英文字体相当漂亮: Robot字体本身是一款非常漂亮的英文字体,Roboto-Medium 字体被广泛用于广告、海报、画册、包装的设计及印刷中。 考虑到该字体并不支持中文形式,因此在中英文混排时看起来不是那么美观,出于这点考虑,我又加入了自己比较喜欢的一款思源字体来作为中文字体: 二者混排的效果整体来看还算满意,这也本网站当前的显示效果。 另外在寻找字体时我在谷歌字体上发现了一款比较美观的中...
线程&进程
线程和进程是计算机任务处理中的两个概念,一个进程相当于计算机处理的一个任务,一个任务可以找通过多种方式或者找多个不同的人去执行,每一个人或者每一种方式就是一种线程。 多进程问题涉及的是任务的分工问题,一般来说是将一个复杂的任务拆分成多个子任务,每一个子任务执行的时候其它子任务也可以同时执行,例如分布式计算。这种分工的好处是可以保证资源的充分利用,但是如果父任务的执行出现错误或者计算错误,那么后边的任务也会受到影响。多进程问题的优化主要是一个多任务管理的方式问题,一般常用的一种方法是队列。 多线程问题主要涉及到的是协作问题,通过建立多个可以独立完成任务的线程来完成任务,很明显的一个优势是运行的效率会比较高。但是当线程之间如果使用同样的变量时则会存在并发的风险,这会大大降低多线程工作的效率,一般来说多线程的优化问题主要是如何减少线程之间的相互影响,一种比较有效的方式就是加一层锁,限制做个线程同时对一个变量进行更改的权利 在 Python 中,线程不能加速受 CPU 限制的任务,原因是标准 Python 系统中使用了全局解释器锁(GIL)。 GIL 的作用是避免 Python 解...
Python中的下划线
Python里经常会出现的下划线的用法汇总
使用神经网络解决鸢尾花分类问题
#例12-8 使用训练集和测试集,对iris数据进行分类import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasetsfrom sklearn.neural_network import MLPClassifierimport pandas as pdfrom sklearn.model_selection import train_test_splitimport joblibiris = datasets.load_iris()# 为可视化方便,取前2列作为特征属性#print('iris的内容为:\n',iris)X = iris.data[:, :2]#不包括上限2y = iris.target# 划分训练集,测试集X_train,X_test, y_train,y_test = train_test_split( X,y,train_size = 0.8,random_state = 42)hidden_n,hidden_m=10,6#隐层大小,2层,神...
线性规划
线性规划最先在第二次世界大战时被提出,用于最大化资源的利用效率。其中的“规划”也是一个军事词汇,指按照既定的时刻表去执行任务或者用最佳方式做人员部署。线性规划问题的研究很快得到了大家的关注。 基本形式 线性规划的一般形式为: minx∈RnZ=CX=∑j=1ncTx, s.t. Ax=b,Gx⩽e,\begin{array}{cl} \min _{x \in \mathbb{R}^{n}} & Z=CX=\sum\limits_{j=1}^n c^{\mathrm{T}} x, \\ \text { s.t. } & A x=b, \\ & G x \leqslant e, \end{array} minx∈Rn s.t. Z=CX=j=1∑ncTx,Ax=b,Gx⩽e, 这样的线性规划问题可以通过一些方法转化为一下 标准形线性规划问题(等式约束和决策变量非负) minx∈RnZ=CX, s.t. Ax=b,x⩾0,bi⩾0\begin{array}{cl} \min _{x \in \mathbb{R}^{n}} & {Z=C...
