使用Python和支持向量回归

在本文中,我将向您展示如何使用称为支持向量回归(SVR)的机器学习算法创建自己的股票预测Python程序。在这个程序中,我将使用Facebook(FB)股票数据,并根据数据预测某天的开盘价。

支持向量回归(SVR)是一种支持向量机,也是一种用于分析数据进行回归分析的监督学习算法。1996年,由Christopher J. C. BurgesVladimir N. VapnikHarris DruckerAlexander J. SmolaLinda Kaufman提出了该版本的SVM回归模型。SVR生成的模型只依赖于训练数据的一个子集,因为用于构建模型的成本函数忽略了任何接近模型预测的训练数据。

支持向量机优点:

  1. 它在高维空间中效果明显。
  2. 如果有清晰的间隔界限,工作效果会很好。
  3. 少数支持向量决定了最终结果,这不但可以帮助我们抓住关键样本,“剔”除大量冗余样本。

支持向量回归缺点:

  1. 当我们有大量数据集时,它表现不佳。
  2. 如果数据集有噪声(大量额外的无意义信息),性能就会很低。

内核类型:

  1. 线性
  2. 多项式
  3. 高斯核函数( 径向基函数 rbf )
  4. Sigmoid

开始编程:

在编写单行代码之前,我们最好是在代码前添加注释来描述我们需要做的事情。通过这种方式,可以回顾代码并确切知道它的作用。我们使用支持向量回归(SVR)模型来预测某一天FB股票的价格。

导入我们需要的库

import pandas as pd
import numpy as np
from sklearn.svm import SVR
import matplotlib.pyplot as plt

接下来,我将把从http://finance.yahoo.com获得的Facebook(FB)股票数据加载到一个名为'df'的数据框缩写变量中。然后输出前几行的数据。

注意:这是过去31天,2019-05-01至2019-05-31的雅虎数据。

但雅虎可能在某些日子里没有记录股票的价格,因此数据集中的记录数量可能少于天数。

#Load the data
df = pd.read_csv('FB_30_days.csv')
df.head()

来自FB_30_days.csv的前5行数据

通过将它们设置为空列表,创建将用作独立和依赖数据集的变量。

#Create the lists / X and y data set
dates = []
prices = []

获取数据集中的行数和列数,以查看每个行的数量和列的数量,数据有22行和7列。

#Get the number of rows and columns in the data set
df.shape

数据集中有22行和7列

数据集中有22行和7列

输出最后一行数据(这将是我们测试的数据)。注意日期是2019-05-31,所以当天的日期是31号。这将是模型的输入,用于预测开盘价为180.279999美元。

#Print the last row of data (this will be the data that we test on)
df.tail(1)

用于测试/验证模型的最后一行数据

通过获取除了用于测试模型的最后一行之外的所有数据来重新创建数据框,并将缺少最后一行的新数据重新存储到'df'。然后输出新数据集的新行数和列数。

#Get all of the data except for the last row
df = df.head(len(df)-1)
print(df.shape)

新数据少了一行。总共有21行7列的数据

获取Date列中的所有行并将其存储到名为'df_dates'的变量中,并从Open列获取所有行,并将数据存储到名为'df_open'的变量中。

df_dates = df.loc[:,'Date'] # Get all of the rows from the Date column
df_open = df.loc[:,'Open'] #Get all of the rows from the Open column

创建独立的数据集'X',并将数据存储在变量'dates'中。

创建依赖数据集'y',并将数据存储在变量'prices'中。

两者都可以通过将数据附加到每个列表来完成。

注意:对于独立数据集,我们只需要从日期开始的那一天,因此我使用split函数获取当天的日期并将其转换为整数,同时将数据附加到日期列表中。

#Create the independent data set 'X' as dates
for date in df_dates:dates.append( [int(date.split('-')[2])] )#Create the dependent data set 'y' as prices
for open_price in df_open:prices.append(float(open_price))

查看数据集中记录的日期天数。

#See what days were recoreded in teh data set

数据集中记录的日期

创建一个函数,该函数使用3个不同的支持向量回归(SVR)模型和三个不同的内核,这样可以查看哪个内核表现最佳。这个函数将有三个参数,日期,价格和我们想要预测价格的日期。为此,首先我将创建具有3个不同内核的3个SVR模型(线性,多项式,径向基函数)。接下来,我将使用日期和价格数据对每个模型进行训练。最后但并非最不重要的是,我将在图表上绘制模型,以查看哪个最适合当天的预测。

#Function to make predictions using 3 different support vector regression models with 3 different kernals
def predict_prices(dates, prices, x):#Create 3 Support Vector Regression Modelssvr_lin = SVR(kernel='linear', C=1e3)svr_poly = SVR(kernel='poly', C=1e3, degree=2)svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1)#Train the models on the dates and pricessvr_lin.fit(dates,prices)svr_poly.fit(dates, prices)svr_rbf.fit(dates, prices)#Plot the models on a graph to see which has the best fitplt.scatter(dates, prices, color = 'black', label='Data')plt.plot(dates, svr_rbf.predict(dates), color = 'red', label='RBF model')plt.plot(dates, svr_lin.predict(dates), color = 'green', label='Linear model')plt.plot(dates, svr_poly.predict(dates), color = 'blue', label='Polynomial model')plt.xlabel('Date')plt.ylabel('Price')plt.title('Support Vector Regression')plt.legend()plt.show()#return all three model predictionsreturn svr_rbf.predict(x)[0], svr_lin.predict(x)[0], svr_poly.predict(x)[0]

现在我可以开始进行FB股票价格预测了。回顾原始数据集中除去的的最后一行数据,日期是2019-05-31,这将是预测开盘价格的模型输入,即180.279999美元。

现在我将测试模型并将我所需要预测的日期设置为31。下图中的最优模型似乎是RBF,它是使用称为径向基函数的内核的支持向量回归模型。该模型预测第31天的价格为180.333549美元,这非常接近实际价格180.279999美元

#Predict the price of FB on day 31
predicted_price = predict_prices(dates, prices, [[31]])
print(predicted_price)

目前来说你已经完成了创建SVR程序来预测FB股票的内容!

运用spss modeler运用支持向量机_使用支持向量回归进行Facebook股票预测相关推荐

  1. 【视频】支持向量机SVM、支持向量回归SVR和R语言网格搜索超参数优化实例

    最近我们被客户要求撰写关于SVM的研究报告,包括一些图形和统计输出. 什么是支持向量机 (SVM)? 我们将从简单的理解 SVM 开始. [视频]支持向量机SVM.支持向量回归SVR和R语言网格搜索超 ...

  2. python支持向量机回归_支持向量机——核函数与支持向量回归(附Python代码)

    上期跟大家介绍了支持向量机的一般原理,今天继续跟大家聊聊支持向量机--核函数与支持项链回归. 1 核函数 数据通过某种变换,使原本二维的问题通过某种函数转换到高维的特征空间,而这个函数就称为核函数.核 ...

  3. 支持向量回归代码_RDKit:基于支持向量回归(SVR)预测logP

    RDKit一个用于化学信息学的python库.使用支持向量回归(SVR)来预测logP. 分子的输入结构特征是摩根指纹,输出是logP. 代码示例: #导入依赖库 import numpy as np ...

  4. 机器学习之支持向量回归(SVR)预测房价—基于python

    大家好,我是带我去滑雪! 本期使用爬取到的有关房价数据集data.csv,使用支持向量回归(SVR)方法预测房价.该数据集中"y1"为响应变量,为房屋总价,而x1-x9为特征变量, ...

  5. 运用spss modeler运用支持向量机_(科研工具合集之①)SPSS安装以及下载方式

    SPSS简介 SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件.最初软件全称为"社会科学统计 ...

  6. 运用spss modeler运用支持向量机_玻璃精雕机的调试技巧

    玻璃精雕机是一种运用数字控制的机床设备,与旧式的手艺机床比较,数控机床运用电脑绘图并编程,机床在加工时通过执行程序完结自动加工.玻璃精雕机通常是三轴规划,机床在运转时,读取程序数据并转化成电信号,由这 ...

  7. 运用spss modeler运用支持向量机_四个小项目完全解读支持向量机

    支持向量机算法的基础是最大间隔分类器,最大间隔分类器虽然很简单,但不能应用于大部分数据,因为大部分属是非线性数据,无法用线性分类器进行分类,解决方案是对特征空间进行核函数映射,然后再运行最大间隔分类器 ...

  8. 采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测(附完整代码)

    大家好,我是带我去滑雪,每天教你一个小技巧! 本文分别采用支持向量回归(SVR)和随机森林回归预测两种机器学习方法对房价进行预测.随机将数据分为训练集和测试集,比例为8:2,数据和代码均在文末. 1. ...

  9. SPSS Modeler数据挖掘学习_部分笔记

    数据挖掘是一个过程,是一个以数据为中心的循序渐进的螺旋式数据探索过程. ![上图指出,数据挖掘时一个以数据为核心多个环节紧密相连,循环反复且循序渐进的数据探索过程](https://img-blog. ...

  10. 支持向量机 (三): 优化方法与支持向量回归

    拉格朗日乘子法 - KKT条件 - 对偶问题 支持向量机 (一): 线性可分类 svm 支持向量机 (二): 软间隔 svm 与 核函数 支持向量机 (三): 优化方法与支持向量回归 优化方法 一.S ...

最新文章

  1. pytorch 查看模型参数,查看模型特定层输入输出,模型结构图绘制总结
  2. 2D 游戏引擎 AlloyGameEngine
  3. 怎么查看python是否安装好了pyinstaller_Python PyInstaller安装和使用教程(详解版)...
  4. int默认值为0,Integer默认值为null
  5. 日常问题——初始化Hive仓库报错com.google.common.base.Preconditions.checkArgument
  6. python数组如果余弦_numpy :: 计算特征之间的余弦距离
  7. 如何解决ado.net entity framework的使用,再别的调用项目中依然正常
  8. 【恋上数据结构】希尔排序
  9. mysql 获取select结果_php如何操作mysql获取select 结果
  10. java manualbuffer_FlatBuffer Java Bean自由转换
  11. scala设计模式_Scala中的工厂设计模式
  12. 【CSS】虎躯一震!flex=1 和 flex-grow=1 竟然不一样!
  13. “长按地址在浏览器中打开”的解决办法
  14. svn连接工具tortoiseSVN
  15. 小白也能搞通UDP通信(88E1111 RGMII 接口)
  16. stm32开发板调试问题记录----去除flash读保护以及debug进不去main.c的问题
  17. c4d-学习笔记-4-建模
  18. js 实现批量下载页面中的图片
  19. linux 免费 版本,五个免费的轻量级Linux发行版
  20. Spring Security系列教程-Spring Security核心API讲解

热门文章

  1. [Vue]动态加载组件的四种方式
  2. js定义对象时属性名是否加引号问题
  3. 全国省市县行政区划SQL代码文件
  4. STM32电机TB6612驱动
  5. 企业级POS收银系统源码(客户端+后台)
  6. 电脑模拟收银机_机场收银模拟器下载
  7. GitLab 创建项目组及将代码导入项目
  8. Linux中查看文件夹大小的命令
  9. 5分钟商学院-个人篇-谈判能力
  10. 如何给光耦输入端限流