下一步是为验证集创建一个预测,并使用实际值检查RMSE。

做出预测
preds = []
对于我的范围(0,248):
a = train'close'.sum() + sum(preds)
B = A/248
preds。(b)
结果计算RMSE
rms = np.sqrt(np.mean(np.power(((np.Array)(有效['close']) - preds),2))))))))))))))
RMS
104.548
仅检查RMSE并不能帮助我们了解模型的执行方式。让我们将其可视化以获得更直观的理解。因此,这是预测值与实际值的图。
绘制图片
有效[''] = 0
有效[''] = preds
plt.plot(train ['close'])
plt.plot(有效[['close','']])
推理
RMSE值接近105,但是结果不是很有希望(从图可以看出)。预测值的范围与验证集中的观测值相同(最初有增加趋势,然后慢慢降低)。
在下一节中,我们将介绍两种常用的机器学习技术 - 线性回归和KNN,并了解它们在我们的股票市场数据上的表现。
2。线性回归简介
可以在此数据上实现的最基本的机器学习算法是线性回归。线性回归模型返回一个方程式,该方程式决定了独立变量和因变量之间的关系。
线性回归的方程式可以写为:
在这里,x1,x2,....xň表示自变量,而系数θ1,θ2,...θñ代表权重。
对于我们的问题描述,我们没有一组自变量。我们只有日期。让我们使用日期列来提取诸如 - 日,月,年,星期一/星期五之类的功能,然后适合线性回归模型。
代码
我们将首先按升序排序数据集,然后创建一个单独的数据集,以便创建的任何新功能都不会影响原始数据。
将索引设置为日期值
df ['date'] = pd。(df.date,='%y-%m-%d')
df.index = df ['date']
种类
data = df。(= true,axis = 0)
创建一个单独的数据集
= pd。(index = range(0,len(df)),= ['date','close'])
对于I范围(0,LEN(数据)):
'date'= data'date'
'关闭'= data'close'
创建功能
从 。
(, '日期')
.drop('',轴= 1,= true)#将是时间戳
这创建了以下特征:
'年','月,“'','day','','','','','','','',',',',',',',',',',',',',',',' ', '', 和 ''。
注意:我使用了库。如果您没有安装它,只需使用命令PIP即可。另外,您可以使用简单的循环创建此功能。我在下面显示了一个示例。
除此之外,我们还可以添加自己认为与预测有关的特征。例如,我的假设是,一周的第一天和最后几天可能会影响股票的收盘价,而远远超过了其他日子。因此,我创建了一项功能,该功能确定某个一天是星期一/星期五还是星期二/星期三/星期四。可以使用以下代码行完成:
[''] = 0
对于I范围(0,len()):
if(''== 0或''== 4):
''= 1
别的:
''= 0
如果一周中的一天等于0或4,则列值为1,否则为0。类似地,您可以创建多个功能。如果您对可以有助于预测股票价格的功能有一些想法,请在评论部分中分享它们。
现在,我们将数据分为培训和验证集以检查模型的性能。
分为训练集和验证集
火车= [:987]
有效= [987:]
= Train.Drop('Close',Axis = 1)
=火车['关闭']
=有效。drop('Close',Axis = 1)
=有效['close']
实现线性回归
从 。
模型=()
model.fit(,)
对结果进行预测并找到RMSE
preds =模型。()
rms = np.sqrt(np.mean(np.power(((np.Array()-np.Array(preds)),2)))))))))))))))))
RMS
121.156
RMSE值高于先前的技术,该技术清楚地表明线性回归的性能差。让我们看一下图表,了解为什么线性回归做得不好:
绘制图片
有效[''] = 0
有效[''] = preds
有效index = [987:]。索引
train.index = [:987] .index
plt.plot(train ['close'])
plt.plot(有效[['close','']])
推理
线性回归是一种简单的技术,很容易解释,但是有一些明显的缺点。使用回归算法的一个问题是该模型与日期和月列相匹配。该模型没有从一个月前的同一日期或一年前同一日期/月来考虑以前的值,而是从预测的角度考虑以前的值。
从上图可以看出,股价在2016年1月和2017年1月下降。该模型预测了2018年1月的情况。线性回归技术可以很好地解决诸如大型超市之类的销售问题,其中独立功能对确定目标值。
3. K-邻居简介
这里可以使用的另一种有趣的ML算法是KNN(K最近的邻居)。 KNN发现基于自变量的新数据点和旧数据点之间的相似性。让我用一个简单的例子来解释它。
考虑11人的身高和年龄。根据给定特征(“年龄”和“高度”),该表可以以图形格式表示:如下:
为了确定ID#11的重量,K-NN考虑了该ID最近邻居的重量。 ID#11的重量预计将是其邻居的平均值。如果我们现在考虑三个邻居(k = 3),ID#11的重量将为=(77 + 72 + 60)/3 = 69.66 kg。
代码导入库
从
从 。
从 。
=(=(0,1))
使用上一节中相同的培训和验证集:
比例数据
=。()
= pd。()
=。()
= pd。()
使用使用的最佳参数
= {'':[2,3,4,5,6,7,8,9]}
knn =。()
型号=(knn,,cv = 5)
适合模型并进行预测
model.fit(,)
preds =模型。()
结果查看RMSE值
rms = np.sqrt(np.mean(np.power(((np.Array()-np.Array(preds)),2)))))))))))))))))
RMS
115.721
RMSE值没有太大差异,但是预测和实际值的图应提供更清晰的理解。
绘制图片
有效[''] = 0
有效[''] = preds
plt.plot(有效[['close','']])
plt.plot(train ['close'])
推理
RMSE值几乎与线性回归模型相似,并且图显示了相同的模式。像线性回归一样,KNN也确定了2018年1月的下降,因为这是过去几年的形式。我们可以肯定地说,回归算法在此数据集上的性能差。
让我们继续研究某些时间序列预测技术,以了解它们在面对股价预测挑战时的表现。
4。汽车介绍
Arima是一种非常流行的时间序列预测统计方法。 Arima模型考虑了过去的值以预测未来的价值。 Arima有三个重要参数:
Arima参数调整可能需要大量时间。因此,我们将使用Auto Arima,该Auto Arima会自动选择(P,Q,D)来提供最小错误的最佳组合。
代码
来自.arima
data = df。(= true,axis = 0)
火车=数据[:987]
有效=数据[987:]
=火车['关闭']
=有效['close']
model =(,,= 1,= 1,max_p = 3,max_q = 3,m = 12,= 0,= true,d = 1,d = 1,trace = true,=''',= true)
model.fit()
=模型。(= 248)
= pd。(,index =有效index,= ['''])
结果
rms = np.sqrt(np.mean(np.power((np.Array)(有效['close']) - np.array([''']),2)))))))))))))))))))))
RMS
44。
绘制图片
plt.plot(train ['close'])
plt.plot(有效['close'])
plt.plot(预测['预测'])
推理
如前所述,自动Arima模型使用过去的数据来了解时间序列中的模式。使用这些值,该模型获得了该系列的增长趋势。尽管使用此技术的预测比以前实现的机器学习模型的预测要好得多,但这些预测仍然不接近实际值。
从该图可以看出,该模型在该系列中捕获了趋势,但并未集中在季节性部分上。在下一节中,我们将实施一个时间序列模型,以考虑该系列的趋势和季节性。
5。简介
可以在库存预测数据集上实现许多时间序列技术,但是在拟合模型之前,大多数这些技术都需要大量的数据预处理。设计和开创性的是一个时间序列预测库,不需要数据预处理,并且非常易于实现。输入是一个具有两个列的数据框架:日期和(DS和Y)。
试图在过去的数据中获得季节性,并在数据集很大时做得很好。
代码导入
从
创造
= pd。(index = range(0,len(df)),= ['date','close'])
对于I范围(0,LEN(数据)):
'date'= data'date'
'关闭'= data'close'
['date'] = pd。(。日期,='%y-%m-%d')
.index = ['date']
准备数据
。
培训和验证
火车= [:987]
有效= [987:]
使用正确的型号
模型=()
型号(火车)
预测
= model.e(= len())
=型号。()
结果查看RMSE
='yhat'
rms = np.sqrt(np.mean(np.power(((np.Array))(有效['y']) - np.Array()),2)))))))))))))
RMS
57。
绘制图片
有效[''] = 0
有效[''] =。
plt.plot(train ['y'])
plt.plot(有效[['y','']])
推理
(与大多数时间序列预测技术相同)尝试从过去的数据中获得趋势和季节性。该模型通常在时间序列数据集上表现良好,但在这种情况下无法实现其声誉。
事实证明,股价没有具体的趋势或季节性。这在很大程度上取决于当前市场状况,因此价格将上涨。因此,诸如Arima之类的预测技术不会为此特定问题显示出良好的结果。
让我们继续尝试另一种先进的技术 - 长期和短期内存(LSTM)。
6。长期和短期记忆简介(LSTM)
LSTM广泛用于序列预测问题,已被证明非常有效。他们之所以非常有效的原因是,LSTM能够存储过去的重要信息,而忘记了不重要的信息。 LSTM有三扇门:
现在,让我们将LSTM作为黑匣子实现,并在我们的特定数据上检查其性能。
代码导入所需的库
从 。
来自Keras。
来自Keras。密集,LSTM
创造
data = df。(= true,axis = 0)
= pd。(index = range(0,len(df)),= ['date','close'])
对于I范围(0,LEN(数据)):
'date'= data'date'
'关闭'= data'close'
设置索引
.index = .date
.drop('date',轴= 1,= true)
创建培训和测试集
=。
火车= [0:987,:]
有效= [987:,:]
将数据集转换为X和Y列
=(=(0,1))
=。()
,= [],[]
对于我的范围(60,Len(火车)):
。([I-60:i,0])
。([i,0])
,= np.Array(),np.Array()
= np。((。
创建和使用LSTM网络
模型=()
model.Add(lstm(单位= 50,= true,=(。shape [1],1)))))
ADD(LSTM(单位= 50))
型号(密集(1))
桩(损失='',='adam')
model.fit(,,,= 1,= 1,= 2)
使用训练集中的过去60个值预测246个值
= [len() - len(有效)-60:]。
=。(-1,1)
=。()
= []
对于我的范围(60,.shape [0]):
。([I-60:i,0])
= np.array()
= np。(,(。形状[0],。shape [1],1))
=型号。()
=。()
结果
rms = np.sqrt(np.mean(np.power((录用 - ),2),2))))))
RMS
11.,
绘制图片
火车= [:987]
有效= [987:]
有效[''] =
plt.plot(train ['Close'])
plt.plot(有效[['close','']])
推理
LSTM模型可以根据不同的参数进行调整,例如更改LSTM层的数量,添加值或增加时期的数量。但是,LSTM的预测是否足以确定股票价格是在上涨还是下跌?当然不是!
正如我在本文开头提到的那样,股票价格受到有关公司的新闻以及其他因素(例如货币化或公司的合并/拆分)的影响。还有一些无形的因素通常是不可预测的。
结局笔记
时间序列预测是一个非常有趣的领域,正如我在撰写这些文章时意识到的那样。社区中有一种看法,这是一个非常复杂的领域。尽管有些确实更为复杂,但是一旦您掌握了基本技术,它将不那么困难。
本文的作者使用六种方法来预测股票价格波动,并分析了结果模型中每种算法的优点和缺点。从数字可以看出,LSTM方法是最合适的。一种方法,但是股票市场需要考虑许多因素。不仅需要预测一些关键功能。我们可以根据先前数据验证算法,但使用该算法来预测未来的库存上升。损失下降时仍然存在一些风险,因此您仍然应该谨慎使用这些算法。至少没有算法可以预测未来股票的时间序列模型算法100%。最好暂时使用该算法来连续训练,直到未来的技术有一天成熟。
使用和深(用代码)进行库存
# 如何使用RMSE和可视化方法评估模型预测效果及验证集预测步骤详解
# 让我们
# 可以看出
# 我在
# 这是
# 未来
# 创建一个
# 很好
# 是一种
# 在此
# 您可以
# 将是
# 做得
# 可以使用
# 股票市场
# 可以根据
# 先前
# 的是
# 是一个
# 升序
# 是在
# 惠州网站建设框架图
# 德州网站建设策划书
# 邯郸网站优化哪里找
# 最近的seo电话
# 湘潭品质网站建设
# 拼多多推广报告查询网站
# 线上推广获客营销案例
# 舟山抖音营销推广多难
# 太原seo优化策略
# 曲阜seo推广商机
# 徐州移动网站建设报价
# 关键词排名丿乐云seo品牌
# 关于网站优化推荐的请示
# 济宁网站推广步骤
# 重庆商家推广营销招聘
# 门禁卡网站推广建设
# 滁州手机网站建设
# 临沂市seo排名
# 宁安网站建设费用
# 晋中网站整合营销推广
相关文章:
想要实现网站变现赚钱,选择一个靠谱的广告联盟非常重要!
策划一个成功的app地推活动方案应该怎么做?
广告推广赚钱是什么意思?怎么做?
免费收录:助你网站腾飞的绝佳机会,汾阳灯箱网站建设
推广的常见的4个另类做法,你是不是也实验过?
免费赋能,让你的未来无限可能,太康网站seo优化哪家便宜
想赚点零花钱不知道怎么做?这6款靠谱的手机赚钱软件推荐给你!
新手如何辨别一个广告联盟是不是骗子?
使用Emlog搭建个人博客网站的终极指南,珠海专业的网站优化报价
搜狗联盟广告价钱点击一次超7元?对,你没有眼花!
怎么用时下的一些热门*剧来进行引流变现?
SEO很多,如何在竞争激烈的市场中脱颖而出?,晋中网站建设售后
SEO经营:助力企业腾飞的秘密武器,赤峰抖音seo运营公司
揭秘成功的自媒体人,如何打造个人品牌?,平湖官方网站建设
社交app如何利用社交新媒体快速进行app推广引流?
高佣联盟赚钱是真的吗?高佣联盟怎么赚钱,有哪些技巧和方法?
SEO走动:提升网站流量的关键一步,SEO优化公司还赚钱吗
假原创:互联网时代的隐形危机与解决之道,兰州网站建设前端设计
SEO韩国:为您开启国际市场的增长之门,浙江seo培训推荐
2021年最火的三个普通人正在做的副业赚钱项目盘点!
引流是一个长期的工作,坚持下去才有收获!
一秒采集:提升效率、创造价值的秘密武器,万创网网络营销推广方案
免费洗稿,提升创作效率的神奇工具,焦作建设网站哪家好
优排软件:高效管理新天地,轻松提升工作效率,影楼网站建设海报设计
推广之利用微信引流吸粉的四个方法
人工润色:让文字更具魅力的秘密武器,创意网站建设费用
优化提长:让企业效能提升的秘密武器,德惠做网站建设的公司
SEO是如何推动企业增长的关键力量,周口网站关键词搜索排名
SEO笔记:如何打造高效的SEO策略提升网站排名,企业网站优化网站推广
百度、腾讯、头条加入广告联盟三国杀,谁能独占鳌头?
利用老电影赚钱也能轻松月入过万,你知道吗?
共创小助手:赋能团队创新与协作的全新利器,园区关键词排名策划
2021年网上赚钱方法有哪些?这四个最值得做!
广告是什么意思?还能赚钱吗,前景如何?
SEO搜外:全球搜索引擎优化的秘密武器,大连信息化网站优化模式
利用b站*进行快速、大量引流的4个方法!
广告联盟上推广的产品,广告产品和广告产品哪种更赚钱?
SEO占位:如何在竞争激烈的市场中占得先机?,泉州高校网站建设
成年人副业赚钱是必选项!哪些副业挣钱项目比较靠谱?
怎么通过问卷调查赚钱?怎样才能真的赚到钱?
引流没效果?想要提升引流效果你要掌握这四条核心要素!
什么是神马排名?让你的网站脱颖而出,轻松占据搜索引擎的C位!,肇庆seo优化分析
优化服务网-提升客户体验,打造全方位智慧服务平台,河南网站推广免费服务商
免费写文章,轻松解决内容创作难题,安徽服务网站建设大全
是什么?赚钱的思路又是什么?
SEO如何通过正确的SEO策略引爆你的流量与排名,脉脉营销推广方案
推广游戏类赚钱项目操作思路分享!
想在广告联盟上接单赚钱,这些qq引流技巧你必须掌握!
了解SEO:让你的网站在搜索引擎中脱颖而出的秘密武器,何谓网站推广
人人|直播|,拿出手机就能和你心仪的女神随时随地面对面交流聊天!
*请认真填写需求信息,我们会在24小时内与您取得联系。