以预测股票涨跌案例入门基于SVM的机器学习

您所在的位置:网站首页 java分析股票 以预测股票涨跌案例入门基于SVM的机器学习

以预测股票涨跌案例入门基于SVM的机器学习

2024-05-21 02:04:59| 来源: 网络整理| 查看: 265

    SVM是Support Vector Machine的缩写,中文叫支持向量机,通过它可以对样本数据进行分类。以股票为例,SVM能根据若干特征样本数据,把待预测的目标结果划分成“涨”和”跌”两种,从而实现预测股票涨跌的效果。

1 通过简单案例了解SVM的分类作用

    在Sklearn库里,封装了SVM分类的相关方法,也就是说,我们无需了解其中复杂的算法,即可用它实现基于SVM的分类。通过如下SimpleSVMDemo.py案例,我们来看下通过SVM库实现分类的做法,以及相关方法的调用方式。    

1 #!/usr/bin/env python 2 #coding=utf-8 3 import numpy as np 4 import matplotlib.pyplot as plt 5 from sklearn import svm 6 #给出平面上的若干点 7 points = np.r_[[[-1,1],[1.5,1.5],[1.8,0.2],[0.8,0.7],[2.2,2.8],[2.5,3.5],[4,2]]] 8 #按0和1标记成两类 9 typeName = [0,0,0,0,1,1,1]

    在第5行里,我们引入了基于SVM的库。在第7行,我们定义了若干个点,并在第9行把这些点分成了两类,比如[-1,1]点是第一类,而[4,2]是第二类。

    这里请注意,在第7行定义点的时候,是通过np.r_方法,把数据转换成“列矩阵”,这样做的目的是让数据结构满足fit方法的要求。     

10 #建立模型 11 svmTool = svm.SVC(kernel='linear') 12 svmTool.fit(points,typeName) #传入参数 13 #确立分类的直线 14 sample = svmTool.coef_[0] #系数 15 slope = -sample[0]/sample[1] #斜率 16 lineX = np.arange(-2,5,1)#获取-2到5,间距是1的若干数据 17 lineY = slope*lineX-(svmTool.intercept_[0])/sample[1]

  在第11行里,我们创建了基于SVM的对象,并指定该SVM模型采用比较常用的“线性核”来实现分类操作。

      在第14行,通过fit训练样本。这里fit方法和之前基于线性回归案例中的fit方法是一样的,只不过这里是基于线性核的相关算法,而之前是基于线性回归的相关算法(比如最小二乘法)。训练完成后,通过第14行和第15行的代码,我们得到了能分隔两类样本的直线,包括直线的斜率和截距,并通过第16行和第17行的代码设置了分隔线的若干个点。    

18 #画出划分直线 19 plt.plot(lineX,lineY,color='blue',label='Classified Line') 20 plt.legend(loc='best') #绘制图例 21 plt.scatter(points[:,0],points[:,1],c='R') 22 plt.show()

  计算完成后,我们通过第19行的plot方法绘制了分隔线,并在第21行通过scatter方法绘制所有的样本点。由于points是“列矩阵”的数据结构,所以是用points[:,0]来获取绘制点的 x坐标,用points[:,1]来获取y坐标,最后是通过第22行的show方法绘制图形。运行上述代码,我们能看到如下图13.8的效果,从中我们能看到,蓝色的边界线能有效地分隔两类样本。

    

    从这个例子中我们能看到,SVM的作用是,根据样本,训练出能划分不同种类数据的边界线,由此实现“分类”的效果。而且,在根据训练样本确定好边界线的参数后,还能根据其它没有明确种类样本,计算出它的种类,以此实现“预测”效果。 

2 数据标准化处理

    标准化(normalization)处理是将特征样本按一定算法进行缩放,让它们落在某个范围比较小的区间,同时去掉单位限制,让样本数据转换成无量纲的纯数值。

    在用机器学习方法进行训练时,一般需要进行标准化处理,原因是Sklearn等库封装的一些机器学习算法对样本有一定的要求,如果有些特征值的数量级偏离大多数特征值的数量级,或者有特征值偏离正态分布,那么预测结果会不准确。

    需要说明的是,虽然在训练前对样本进行了标准化处理,改变了样本值,但由于在标准化的过程中是用同一个算法对全部样本进行转换,属于“数据优化”,不会对后继的训练起到不好的作用。

    这里我们是通过sklearn库提供的preprocessing.scale方法实现标准化,该方法是让特征值减去平均值然后除以标准差。通过如下ScaleDemo.py案例,我们实际用下preprocessing.scale方法。     

1 #!/usr/bin/env python 2 #coding=utf-8 3 from sklearn import preprocessing 4 import numpy as np 5 6 origVal = np.array([[10,5,3], 7 [8,6,12], 8 [14,7,15]]) 9 #计算均值 10 avgOrig = origVal.mean(axis=0) 11 #计算标准差 12 stdOrig=origVal.std(axis=0) 13 #减去均值,除以标准差 14 print((origVal-avgOrig)/stdOrig) 15 scaledVal=preprocessing.scale(origVal) 16 #直接输出preprocessing.scale后的结果 17 print(scaledVal)

  在第6行里,我们初始化了一个长宽各为3的矩阵,在第10行,通过mean方法计算了该矩阵的均值,在第12行则通过std方法计算标准差。

      第14行是用原始值减去均值,再除以标准差,在第17行,是直接输出preprocessing.scale的结果。第14行和第17行的输出结果相同,均是下值,从中我们验证了标准化的具体做法。    

1 [[-0.26726124 -1.22474487 -1.37281295] 2 [-1.06904497 0. 0.39223227] 3 [ 1.33630621 1.22474487 0.98058068]]

   

3 预测股票涨跌

    在之前的案例中,我们用基于SVM的方法,通过一维直线来分类二维的点。据此可以进一步推论:通过基于SVM的方法,我们还可以分类具有多个特征值的样本。

    比如可以通过开盘价、收盘价、最高价、最低价和成交量等特征值,用SVM的算法训练出这些特征值和股票“涨“和“跌“的关系,即通过特征值划分指定股票“涨”和“跌”的边界,这样的话,一旦输入其它的股票特征数据,即可预测出对应的涨跌情况。在如下的PredictStockBySVM.py案例中,我们给出了基于SVM预测股票涨跌的功能。     

1 #!/usr/bin/env python 2 #coding=utf-8 3 import pandas as pd 4 from sklearn import svm,preprocessing 5 import matplotlib.pyplot as plt 6 origDf=pd.read_csv('D:/stockData/ch13/6035052018-09-012019-05-31.csv',encoding='gbk') 7 df=origDf[['Close', 'Low','Open' ,'Vol','Date']] 8 #diff列表示本日和上日收盘价的差 9 df['diff'] = df["Close"]-df["Close"].shift(1) 10 df['diff'].fillna(0, inplace = True) 11 #up列表示本日是否上涨,1表示涨,0表示跌 12 df['up'] = df['diff'] 13 df['up'][df['diff']>0] = 1 14 df['up'][df['diff']


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭