首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SVR对所有功能都提供了相同的预测。

SVR对所有功能都提供了相同的预测。
EN

Data Science用户
提问于 2019-03-03 03:40:51
回答 1查看 1.9K关注 0票数 3

我正在创建一个基本的应用程序来预测日n+1股票的“收盘价”,给出了使用Python和Scikit-learn的股票n的特性。

我的dataframe中的一个示例行看起来如下(2000行)

代码语言:javascript
运行
AI代码解释
复制
       Open     Close    High     Low      Volume     
0      537.40   537.10   541.55   530.47   52877.98  

类似于这段视频,他使用的是“日期”和“公开价格”。在本例中,日期是功能,开放价格是目标。

在我的示例中,我的数据集中没有“日期”值,而是希望使用Open、High、Low数据作为特性,因为我认为这样会使其更准确

我定义了我的特征和目标

代码语言:javascript
运行
AI代码解释
复制
features = df.loc[:,df.columns != 'Closing']
targets = df.loc[:,df.columns  == 'Closing']

它将返回如下特性的df:

代码语言:javascript
运行
AI代码解释
复制
       Open      High      Low      Vol from  
29     670.02    685.11    661.09   92227.36

目标:

代码语言:javascript
运行
AI代码解释
复制
       Close
29     674.57

然而,我意识到数据需要放在一个numpy数组中,所以我现在得到了如下所示的特性和目标

代码语言:javascript
运行
AI代码解释
复制
features = df.loc[:,df.columns != 'Closing'].values
targets = df.loc[:,df.columns  == 'Closing'].values

所以现在我的特征是这样的

代码语言:javascript
运行
AI代码解释
复制
[6.70020000e+02 6.85110000e+02 6.61090000e+02 9.22273600e+04
  6.23944806e+07]
 [7.78102000e+03 8.10087000e+03 7.67541000e+03 6.86188500e+04
  5.41391322e+08]

我的目标是这样的

代码语言:javascript
运行
AI代码解释
复制
[  674.57]
[ 8042.64]

然后,我使用

代码语言:javascript
运行
AI代码解释
复制
X_training, X_testing, y_training, y_testing = train_test_split(features, targets, test_size=0.8)

我尝试遵循Scikit-Learn文档,这导致了以下结果

代码语言:javascript
运行
AI代码解释
复制
svr_rbf = svm.SVR(kernel='rbf', C=100.0, gamma=0.0004, epsilon= 0.01 )
svr_rbf.fit(X_training, y_training)
predictions = svr_rbf.predict(X_testing)
print(predictions)

我假设这将预测给定测试特性的Y值,然后我可以根据实际的y_testing值绘制Y值,以查看它们有多相似。但是,对于每个X_testing特性,预测结果都打印出相同的值。

代码语言:javascript
运行
AI代码解释
复制
[3763.84681818 3763.84681818 3763.84681818 3763.84681818 3763.84681818

我试过改变epsilon,c和gamma的值,但这似乎并没有改变这样一个事实,即预测总是给出相同的值

我知道预测股票价格可能不准确,但当我将模型应用于各种不同的测试数据时,我肯定做错了什么来获得相同的值。

EN

回答 1

Data Science用户

回答已采纳

发布于 2019-03-03 04:56:05

有几个部分我认为改变会有帮助。

首先,一个通用的模型构建:我建议您在将数据放入模型之前进行缩放。

它可能不会直接解决在每个步骤中接收相同的预测值的问题,但您可能会注意到,您的预测位于输入值的某个范围内--因为您使用的是未缩放的卷,这将使模型变得很困难。它本质上必须同时在两个不同的尺度上工作,这是不能做得很好的。

查看一下标准标度技术,了解如何做到这一点。

接下来,一些要改变的事情的建议,特别是因为你在处理股票价格:

我通常会预测明天股票市场的价值,而不是你使用公开/高/低/成交量的相同数据的收盘价。对我来说,只有当你有高频(日内)数据时,这才有意义。考虑到这一点,您将需要将y值移动一步。有一个方法在Pandas DataFrames上提供帮助.,但是由于您没有date列,而且您只需要按一个时间步移动,您可以这样做:

代码语言:javascript
运行
AI代码解释
复制
features = df.loc[:-1, df.columns != 'Closing'].values    # leave out last step
targets = df.loc[1:, df.columns  == 'Closing'].values     # start one step later

然后,您甚至可以预测第二天的开盘价格,或者将closing数据保存在features数据中,因为这不会带来时间偏差。

一些需要更多设置的东西,将是查看您的数据洗牌。同样,因为您希望使用历史值来预测未来的值,所以您需要将相关的历史值放在一起。看看我对这个问题的另一个答案和图表,它解释了更多关于这个想法的内容。

编辑

您还应该缩放y_trainy_test,以便模型知道在此范围内进行预测。使用相同的StandardScaler实例执行此操作,以避免引入偏差。有一个看这个简短的教程。然后,您的预测将在相同的范围内(例如[-1, +1])。您也可以在该范围内计算错误。如果你真的想要的话,你可以把你的预测缩小到原来的范围,这样看起来就更现实了,但这并不是验证模型的真正必要。你可以简单地在缩放的空间里,根据地面的真实来绘制预测。

看看这个线程,它解释了为什么您应该在测试数据上使用相同的StandardScaler实例的原因。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/46575

复制
相关文章
Python异常处理traceback和exc_info
开发过程中一般都会使用traceback将捕获到的异常打印出来。 import traceback def fake_exception(): 1 / 0 def catch_exception(): try: fake_exception() except: traceback.print_exc() catch_exception() 结果 Traceback (most recent call last): File ".\test.p
Ewdager
2020/07/14
6490
Python 日志打印之logging.config.dictConfig使用总结
dictConfig函数位于logging.config模块,该函数通过字典参数config对logging进行配置。3.2版本新增的函数
授客
2021/01/13
4.1K2
11 | Tornado源码分析:Gen 对象(下)
我们先看一下源码(我已经进行过整理的源码,主要方面大家去理解里面的实现逻辑,若想看完整的源码建议大家可以自行查看本机安装的 tornado 版本中的源代码),在源码中我做了一些批注,这样有利于大家更好的去结合代码来深入了解 其内部的运作。
python编程从入门到实践
2020/09/09
4260
Openstack之log详解
openstack中的日志由oslo_log统一实现,延续了openstack一贯的封装大法,以十分友好的方式将接口提供给各个组件使用。
tunsuy
2022/10/27
4940
[源码解析] PyTorch 流水线并行实现 (6)--并行计算
前几篇文章我们介绍了 PyTorch 流水线并行的基本知识,自动平衡机制和切分数据,本文我们结合论文内容来看看如何实现流水线。
罗西的思考
2021/10/13
1.5K0
12 | Tornado源码分析:BaseIOStream 对象(上)
hello 大家好 通过前几期我们已经聊了 Tornado 中协程的创建、运行,本期我们开始聊聊 tornado 中 网络读写数据处理相关的内容,这部分还是比较复杂的我们打算拆分成几期来聊。
python编程从入门到实践
2020/09/16
4630
PyTorch 源码解读之流水线并行
如图所示为谷歌提出的流水线并行算法,名为 GPipe,论文位于 https://arxiv.org/abs/1811.06965。首先将模型切分为连续的多个 stage,每个 stage 占据一台设备,从而利用多台设备容纳下单设备无法容纳的模型。其次,GPipe 将 mini-batch 切分为多个 micro-batch,每次只处理一个 micro-batch。在处理完当个 micro-batch 后,该 micro-batch 的结果将会被发送给下一台设备,同时开始处理下一个 micro-batch。
OpenMMLab 官方账号
2023/09/28
8320
PyTorch 源码解读之流水线并行
uwsgi日志中文问题
开发项目,使用uwsgi,遇到个头痛的问题,如果指定了uwsgi打印日志,当日志中写入中文时,直接会导致报错
fanspring
2019/06/27
1.7K0
Python常用库 - logging日志库
logging 使用非常简单,使用 basicConfig() 方法就能满足基本的使用需要;如果方法没有传入参数,会根据默认的配置创建Logger 对象,默认的日志级别被设置为 WARNING,该函数可选的参数如下表所示。
小菠萝测试笔记
2020/06/09
8540
如何扩展python的logging组件支持json日志输出
这两天在优化公司一个python的项目,顺便研究了一下如何将python日志转成json格式,原来在Java的项目中搞过类似的事情,知道日志转成json之后有很多便利的之处,最常见的就是可以直接对接各种日志分析系统,如开源的ELK,将数据导入之后就能快速的进行查询和分析,方便做各种统计,监控或报警等。
我是攻城师
2019/03/06
3.1K0
如何扩展python的logging组件支持json日志输出
Python Web开发中的WSGI协议
 在Python Web开发中,我们一般使用Flask、Django等web框架来开发应用程序,生产环境中将应用部署到Apache、Nginx等web服务器时,还需要uWSGI或者Gunicorn。一个完整的部署应该类似这样:
py3study
2020/01/16
9170
09 | Tornado源码分析:Future 对象
今天我们来看一下 Future 这个对象。从字面意思来看有“未来,将来......”之意义。那它在Tornado 构建的体系中扮演者什么样的角色呢?我们先看一下它的源码:
python编程从入门到实践
2020/07/28
8750
python 查找指定目录下的指定类型文件 脚本
""" Find the largest file of a given type in an arbitrary directory tree. Avoid repeat paths, catch errors, add tracing and line count size. Also uses sets, file iterators and generator to avoid loading entire file, and attempts to work around undecodable dir/file name prints. """
用户5760343
2022/05/13
1.6K0
scrapy进阶开发(一):scrapy架构源码分析
其子类有HtmlResponse,TextResponse,XmlResponse
Meet相识
2018/09/12
2.5K0
scrapy进阶开发(一):scrapy架构源码分析
tf.train.Coordinator
任何线程都可以调用coord.request_stop()来请求所有线程停止。为了配合请求,每个线程必须定期检查coord .should_stop()。一旦调用了coord.request_stop(), coord.should_stop()将返回True。 一个典型的线程运行协调器会做如下事情:
狼啸风云
2019/06/13
1.6K0
python gui中线程的调用
""" ################################################################################# System-wide thread interface utilities for GUIs.
用户5760343
2022/05/13
3770
一篇文章带你搞定Python中logging模块
日志是什么?这个不用多解释。百分之九十的程序都需要提供日志功能。Python内置的logging模块,为我们提供了现成的高效好用的日志解决方案。但是,不是所有的场景都需要使用logging模块,
Go进阶者
2021/11/19
4390
一篇文章带你搞定Python中logging模块
点击加载更多

相似问题

反应-本机:挠曲盒对齐

24

右对齐反应本机挠曲盒

32

挠曲盒高度在反应本机

10

挠曲盒响应导航问题

10

图像内响应挠曲盒问题

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文