导读: 本文主要从股市数据变量的特征分布及特征重要性两个角度对数据进行分析。
通过绘制图表等方法分析特征本身对分布状况或特征间相互关系。通过机器学习模型方法分析出特种重要性排序,选出对结果贡献较大对那几个特征,这对后面建模对模型效果有着不可小觑对效果。
????点击关注|选择星标|干货速递????
数据准备
此处数据获取可参见金融数据准备。
df.info()
特征构造
描述性统计
缺失值分析
检查缺失值wps的的官网最新下载的入口是多少
缺失值可视化
这里使用Series的属性plot直接绘制条形图。
wps 的官网最新下载的地方怎么找
特征间相关性分析
特征值分布
直方图
wps office的免费版的下载的地方是多少
密度图
特征间的关系
函数可视化探索数据特征间的关系
通过多种方式对特征重要性进行评估,将每个特征的特征重要的得分取均值,最后以均值大小排序绘制特征重要性排序图,直观查看特征重要性。
导入相关模块
线性回归系数大小排序
回归系数(regression coefficient)在回归方程中表示自变量
对因变量
影响大小的WPS office官网下载地址在哪里参数。回归系数越大表示
对
影响越大。
创建排序函数
多个回归模型系数排序
随机森林特征重要性排序
随机森林得到的特征重要性的原理是我们平时用的较频繁的一种方法,无论是对分类型任务还是连续型任务,都有较好对效果。在随机森林中某个特征X的重要性的计算方法如下:
对于随机森林中的每一颗决策树, 使用相应的OOB(袋外数据)数据来计算它的袋外数据误差 ,记为
.
随机地对袋外数据OOB所有样本的特征X加入噪声干扰 (就可以随机的改变样本在特征X处的值), 再次计算它的袋外数据误差 ,记为
.
假设随机森林中有
棵树,那么对于特征X的重要性,之所以可以用这个表达式来作为相应特征的重要性的度量值是因为:若给某个特征随机加入噪声之后,袋外的准确率大幅度降低,则说明这个特征对于样本的分类结果影响很大,也就是说它的重要程度比较高。
连续型特征重要性
对于连续型任务的特征重要性,可以使用回归模型RandomForestRegressor中属性。
分类型特征重要性
当该任务是分类型,需要用分类型模型时,可以使用RandomForestClassifier中的属性。
本案例中使用回归模型
下面介绍两个顶层特征选择算法,之所以叫做顶层,是因为他们都是建立在基于模型的特征选择方法基础之上的,例如回归和SVM,在不同的子集上建立模型,然后汇总最终确定特征得分。
RandomizedLasso
RandomizedLasso的选择稳定性方法排序。wps的电脑版下载网址
稳定性选择是一种基于二次抽样和选择算法相结合较新的方法,选择算法可以是回归、SVM或其他类似的方法。它的主要思想是在不同的数据子集和特征子集上运行特征选择算法,不断的重复,最终汇总特征选择结果,比如可以统计某个特征被认为是重要特征的频率(被选为重要特征的次数除以它所在的子集被测试的次数)。理想情况下,重要特征的得分会接近100%。稍微弱一点的特征得分会是非0的数,而最无用的特征得分将会接近于0。
稳定性得分可视化
查看得分超过阈值的变量索引及其得分
RFE递归特征消除特征排序
基于递归特征消除的特征排序。
给定一个给特征赋权的外部评估器(如线性模型的系数),递归特征消除(RFE)的目标是通过递归地考虑越来越小的特征集来选择特征。
主要思想是反复的构建模型(如SVM或者回归模型)然后选出最好的(或者最差的)的特征(可以根据系数来选)。
首先,在初始特征集上训练评估器,并通过任何特定属性或可调用属性来获得每个特征的重要性。
然后,从当前的特征集合中剔除最不重要的特征。
这个过程在训练集上递归地重复,直到最终达到需要选择的特征数。
这个过程中特征被消除的次序就是特征wps的电脑版下载地方(wps office下载安装9.0)的排序。因此,这是一种寻找最优特征子集的贪心算法。
RFE的稳定性很大程wps官网下载的入口是什么度上取决于在迭代的时候底层用哪种模型。例如,假如RFE采用的普通的回归,没有经过正则化的回归是不稳定的,那么RFE就是不稳定的;假如采用的是Ridge,而用Ridge正则化的回归是稳定的,那么RFE就是稳定的。
estimator Estimator instance
一种带有""拟合""方法的监督学评估器,它提供关于特征重要性的信息(例如"coef_"、"feature_importances_")。
n_features_to_select int or float, default=None
要选择的功能的数量。如果'None',则选择一半的特性。如果为整数,则该参数为要选择的特征的绝对数量。如果浮点数在0和1之间,则表示要选择的特征的分数wps的的官网最新的下载入口在哪里。
step int or float, default=1
如果大于或等于1,那么'step'对应于每次迭代要删除的(整数)特征数。如果在(0.0,1.0)范围内,则'step'对应于每次迭代中要删除的特性的百分比(向下舍入)。
verbose int, default=0
控制输出的冗长。
importance_getter str or callable, default='auto'
如果是'auto',则通过估计器的'coef_'或'feature_importances_'属性使用特征重要性。
RFECV
递归特征消除交叉验证。
Sklearn提供了 包,可以用于特征消除,还提供了 ,可以通过交叉验证来对的特征进行排序。
LarsCV
最小角度回归模型(Least Angle Regression)交叉验证。
以上是两个交叉验证,在对特征重要性要求高时可以使用。因运行时间有点长,这里大家可以自行运行得到结果。
创建特征排序矩阵
创建一个空字典来存储所有分数,并求其平均值。
绘制特征重要性排序图
将平均得到创建DataFrame数据框,从高到低排序,并利用可视化方法将结果展示出。这样就一目了然,每个特征重要性大小。
关于Python金融量化
专注于分享Python在金融量化领域的应用。加入知识星球,可以免费获取30多g的量化投资视频资料、量化金融相关PDF资料、公众号文章Python完整源码、量化投资前沿分析框架,与博主直接交流、结识圈内朋友等。