范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

使用Python对股票参数进行特征重要性分析

  前言
  特征重要性分析,顾名思义就是要看看这一批参数里面,各个参数对模型预测结果的贡献度分别是多少,对于每一个预测结果来说,哪些参数的贡献度是最大的,哪些参数是无关紧要的。在本文中,我们以预测股票涨跌为例,简要介绍使用 Python 来对股票预测模型的参数进行特征重要性分析的方法,希望对大家能有所帮助。  导入依赖包import sys import numpy as np import csv import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor from sklearn.inspection import permutation_importance import shap from matplotlib import pyplot as plt  print("python version: {}".format(sys.version))
  这里我使用的 Python 版本是:3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52)  准备好模型训练所需的数据
  要对预测模型的参数进行重要性分析,首先我们得有关于这些参数的数据(如:"MACD", "MACD_DIF", "MACD_DEA", "DMA_DIF", "PLRC12", "PLRC6", "Price1M", "Price3M", "EMA5", "EMAC10"等等)。这些参数我已经事先准备好了,这里我们只需从文件中读取即可。
  使用下面的代码将数据从文件中读取出来:  CSV_FILE_PATH = "./backup/stocks_data_test.csv"  data = pd.read_csv(CSV_FILE_PATH) row_0 = list(data.loc[0]) row_num = data.iloc[:,0].size  print("data len: {}".format(len(row_0))) print("row_num: {}".format(row_num))  y_list = []   # 用于存放标签数据 x_list = []   # 用于存放特征数据 for i in range(row_num):     row_data_list = list(data.loc[i])     y_list.append(int(row_data_list[0]))     x_list.append(row_data_list[1:])  # 将数据类型由 list 转换为 array x_array = np.array(x_list) y_array = np.array(y_list)  print("x_array shape: {}".format(x_array.shape)) print("y_array shape: {}".format(y_array.shape)) print("==================== Column Name ====================") print(list(data.columns)) print("----- Finished -----")
  从代码运行的输出结果中可以看到,我们这一批数据总共有 19 个参数以及 6884 个样本:
  划分训练集和测试集
  使用如下代码将整个数据划分为两个部分:测试集和训练集。训练集用于模型训练,测试集用于模型验证和测试。  # test_size=0.2   设置测试集的样本数量为全部样呗的 20% # random_state=12 设置随机种子为 12 # shuffle=True    打乱样本数据的顺序 x_train, x_test, y_train, y_test = train_test_split(x_array, y_array, test_size=0.2, random_state=12, shuffle=True)  print("x_train shape: {}".format(x_train.shape)) print("y_train shape: {}".format(y_train.shape)) print("x_test  shape: {}".format(x_test.shape)) print("y_test  shape: {}".format(y_test.shape))  print("----- Finished -----")
  从代码的运行输出结果可以看到,这里我们划分的训练集样本数量为 5507 个,测试集的样本数量为 1377 个。
  用随机森林回归算法对模型进行训练# n_estimators:森林中决策树的数量 rf = RandomForestRegressor(n_estimators=100) rf.fit(x_train, y_train)  print("----- Finished -----")
  模型训练好了之后,我们可以使用如下代码使用模型对测试集中的数据进行预测:  predict_value = rf.predict(x_test) for idx,value in enumerate(predict_value):     print("[predict]: idx = {}, label = {}, predict = {}".format(idx, y_test[idx], value))  print("----- Finished -----")调用模型解释包 shap 对参数进行特征重要性分析# 我们记录在文件中的数据的特征参数名称 columns_name_list = [     "ChangePercent", "MACD", "MACD_DIF", "MACD_DEA", "DMA_DIF", "PLRC12", "PLRC6", "Price1M",      "Price3M", "EMA5", "EMAC10", "EMAC12", "EMAC20", "EMAC26", "MAC5", "MAC10", "MAC20", "MAC60", "MAC120" ] explainer = shap.TreeExplainer(rf) shap_values = explainer.shap_values(x_test) shap.summary_plot(shap_values, x_test, feature_names=columns_name_list)  print("----- Finished -----")
  运行上面的代码,我们就可以看到各个参数对模型预测结果的贡献度了,红色代表正向贡献,蓝色代表负向贡献,参数的贡献度从上往下是由大到小,具体情况如下图所示:
  对单个预测结果的特征贡献度进行可视化显示shap.initjs() shap.force_plot(explainer.expected_value, shap_values[0,:], x_test[0,:],feature_names=columns_name_list)shap.initjs() shap.force_plot(explainer.expected_value, shap_values[4,:], x_test[4,:],feature_names=columns_name_list)
  对测试集全部样本预测结果的特征重要性进行可视化shap.initjs() shap.force_plot(explainer.expected_value, shap_values, x_test,feature_names=columns_name_list)
  结语
  以上就是使用 Python 对股票涨跌预测模型的参数进行重要性分析的方法了,如果感觉还不错的话,可以帮忙给个赞哦,感谢各位支持。 需要注意的是,模型预测的准确性和模型以及数据都有关系,要谨慎使用。

去年近九成购物中心客流下降,业内看好2023复苏行情2022年,商业地产市场经历了艰难一年。购物中心客流下降商业地产整体经营难度增加从业者的心态也在发生多重转变。为把握行业发展趋势,全联房地产商会商业地产工作委员会与商业地产智库RE新周期新起点,市体育训练中心扬帆起航来源南京市体育局工作动态新年伊始,在市体育训练中心驻训集训的队伍已经开启了新一届省运会周期的训练备战,训练中心的保障任务也随之展开。新周期新起点,训练中心的各项工作扬帆起航。今年,BBC英超用4年才调查到现在的进展,不用指望这事能很快解决直播吧2月6日讯英超联赛官方在今日发布声明,指控曼城俱乐部在20092018年多年间多次违反英超联盟财务规则,将调查提交至委员会裁决。对此,BBC记者西蒙斯通撰文指出,英超联盟用了新能源车降价潮会否影响宁德时代们由特斯拉掀起的新能源车降价潮远未平息。1月以来,小鹏吉利蔚来等多家车企或直接下调汽车售价,或通过全款购车优惠等各种促销活动变相降价。作为占据新能源整车成本40的动力电池,会否受到新公共领域车辆全面电动化试点正式启动超八成新增公交出租将为新能源车近日,工业和信息化部交通运输部等八部门印发了关于组织开展公共领域车辆全面电动化先行区试点工作的通知(以下简称试点通知)。据了解,本次公共领域车辆全面电动化试点的实施周期从2023年公共领域车辆全面电动化试点正式启动超八成新增公交出租将为新能源车21世纪经济报道记者缴翼飞北京报道近日,工业和信息化部交通运输部等八部门印发了关于组织开展公共领域车辆全面电动化先行区试点工作的通知(以下简称试点通知)。据了解,本次公共领域车辆全有哪些笔记本值得入手?万元左右笔记本推荐高性能笔记本推荐,如果你是爱玩3A大作的游戏党或者是对笔记本性能有要求的生产力用户,那么这份榜单一定不要错过。1ROG幻1620222022年最火的全能本产品,2kg的机身重量配以霍格沃茨之遗同时在线破48万2月国产游戏版号公布霍格沃茨之遗同时在线人数突破48万,官方公布限定PS5手柄霍格沃茨之遗将于2月11日发售,但由于豪华版拥有提前72小时进入游戏的资格,根据SteamDB的数据显示,目前已经有超过2红警里面每个国家的秘密武器,真正的含义代表什么?90年代末,00年代初是单机游戏的天下,红警是当时网吧最火的一款游戏之一,我小时候玩这个游戏印象最深刻的就是红警里面各个国家的秘密武器,例如法国的巨炮美国的伞兵等,而这也是让我开始全面战争战锤3新DLC要来了!全战战锤3大型更新最新消息CA全面战争战锤3有一段时间没有新消息了。今天游戏总监RichAldridge发布了一段视频,他表示今年将会是很令人激动的一年,因为战锤3将迎来大量新内容bug修复品质提升!Ric中超恢复主客场!津门虎双主场最新进展今天(2月7日),2023年职业联赛俱乐部负责人会议暨中超中甲中乙俱乐部负责人峰会在香河国家队基地召开。2023赛季中超恢复主客场制,还将取消U23球员在场要求。这意味着,时隔三年
英超0热刺北京时间10月20日凌晨3点15分,202223赛季英超联赛第12轮的一场焦点战在老特拉福德球场打响,曼联坐镇主场迎战热刺。上半场洛里屡献神扑,双方均无建树,下半场弗雷德打破僵局,双拳难敌四手!哈登砍358重返巅峰,双探花回敬70分!大帝靠不住今天NBA常规赛终于迎来了揭幕战,而首场开打的是绿军坐镇主场迎战76人队,在今年休赛季中双方都对阵容进行了小修小补,76人这边引进了许多火箭旧将,绿军也引进了布罗格登加里纳利,只不绿军76人冲突后续斯马特布朗齐喷恩比德动作危险大帝淡定回应北京时间10月19日上午,凯尔特人在赛季揭幕战以126117击败76人,拿下开门红。第三节初,恩比德抢篮板时夹住了斯马特的手臂,斯马特被撂翻在地后抓了恩比德的脚踝,双方爆发冲突。赛意外的惊喜CCTV5没有预告但直播了NBA揭幕战,球迷又能大屏观赛在CCTV5的官方网站预告中,19号上午10点30分录播女篮的比赛,这就意味着湖人和勇士的揭幕战不播了,观众们大失所望。但是当比赛开始后,球迷惊喜地听到了一个熟悉的声音,于嘉坐镇为导致心绞痛的原因有很多,知道了原因就知道该从哪方面预防现实生活中,很多人都经历过心绞痛。在心绞痛的发展过程中,患者的身体不适比较明显,甚至会出现出汗躁动等症状。所以发现心绞痛后,需要及时治疗否则冠状动脉供血不足,通常会因短暂缺血缺氧而每月的银行短信服务费,你还在扣款吗?这几家银行不收了,望周知银行作为当今社会不可或缺的金融机构,因安全性而吸引了无数财富,在我国老百姓储蓄的积极性在全球稳居前列。过去银行会根据服务内容收取一定的服务费用,比如跨行转账要收费跨行取现要收费。但中使馆发布停止为中国公民开具泰国签证延期领事协助函的通知中国侨网10月19日电据中国驻泰国大使馆网站消息,自2022年3月以来,为解决因疫情影响而不得已在泰国滞留中国公民的实际困难,使馆采取出具领事协助函的特殊做法,帮助有需要的中国公民不为往事忧,只为余生笑,祝福阿娇幸福快乐每一天!祈祷不管有没有那档子事,一直都很喜欢阿娇,只是命运喜欢捉弄她,可怜的孩子!真希望她以后永远顺风顺水开心快乐每一天!一直都很心疼阿娇,觉得她很单纯,傻傻的,很天真无邪的一个小女生,不做作井柏然我生而不养的父母,我相依为命的奶奶,我坎坷的前半生你不要恨你父母,奶奶走了以后,不希望你没有亲人陪伴,到底是血浓于水。这是井柏然奶奶生前,千叮咛万嘱咐他的话。井柏然出生仅28天,便被父母抛弃,爷爷奶奶用年迈的身躯为他重新撑起一个家CCTV5直播NBA湖人vs勇士赛事直播高清现场观看比赛北京时间10月19日上午10点,NBA常规赛揭幕战正在直播中,本场比赛勇士坐镇主场对阵湖人,勇士将颁发冠军戒指!高清直播点击看湖人比赛本赛季,他仍然是卫冕冠军勇士队的领头羊。球员阵霍乱时期的爱情经典语录摘抄关于那些虚无缥缈的爱1他将她理想化了,把一些不可能的美德和想象中的情感全都归属于她。2这状况不像是因为爱情而心神不宁,倒像是染上了霍乱。再一次证实了相思病具有霍乱相同的症状。可弗罗伦蒂诺阿里萨的愿望却