在本人的新书里,将通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得。这里给出以线性回归算法预测股票的案例,以此讲述通过Python的sklearn库实现线性回归预测的技巧。
本文先讲以波士顿房价数据为例,讲述线性回归预测模型的搭建方式,随后将再这个基础上,讲述以线性预测模型预测股票的实现代码。本博文是从本人的新书里摘取的,新书预计今年年底前出版,敬请大家关注。
正文开始(长文预警)
------------------------------------------------------------------------------------------------------------------------------------------------------
1 波士顿房价数据分析
安装好Python的Sklearn库后,在安装包下的路径中就能看到描述波士顿房价的csv文件,具体路径是“python安装路径\Lib\site-packages\sklearn\datasets\data”,在这个目录中还包含了Sklearn库会用到的其他数据文件,本节用到的是包含在boston_house_prices.csv文件中的波士顿房价信息。打开这个文件,可以看到如图所示的数据。
第1行的506表示该文件中包含506条样本数据,即有506条房价数据,而13表示有13个影响房价的特征值,即从A列到M列这13列的特征值数据会影响第N列MEDV(即房价值),在表13.1中列出了部分列的英文标题及其含义。
波士顿房价文件部分中英文标题一览表
标题名 |
中文含义 |
标题名 |
中文含义 |
CRIM |
城镇人均犯罪率 |
DIS |
到波士顿五个中心区域的加权距离 |
ZN |
住宅用地超过某数值的比例 |
RAD |
辐射性公路的接近指数 |
INDUS |
城镇非零售商用土地的比例 |
TAX |
每 10000 美元的全值财产税率 |
CHAS |
查理斯河相关变量,如边界是河流则为1,否则为0 |
PTRATIO |
城镇师生比例 |
NOX |
一氧化氮浓度 |
MEDV |
是自住房的平均房价 |
RM |
住宅平均房间数 |
||
AGE |
1940年之前建成的自用房屋比例 |
从表中可以看到,波士顿房价的数值(即MEDV)和诸如“住宅用地超过某数值的比例”等13个特征值有关。而线性回归要解决的问题是,量化地找出这些特征值和目标值(即房价)的线性关系,即找出如下的k1到k13系数的数值和b这个常量值。
MEDV = k1*CRIM + k2*ZN + … + k13*LITAT + b
上述参数有13个,为了简化问题,先计算1个特征值(DIS)与房价(MEDV)的关系,然后在此基础上讲述13个特征值与房价关系的计算方式。
如果只有1个特征值DIS,它与房价的线性关系表达式如下所示。在计算出k1和b的值以后,如果再输入对应DIS值,即可据此计算MEDV的值,以此实现线性回归的预测效果。
MEDV = k1*DIS + b
2 以波士顿房价数据为案例,搭建含一个特征值的线性预测模型
在下面的OneParamLR.py范例程序中,通过调用Sklearn库中的方法,以训练加预测的方式,推算出一个特征值