平安银行股票数据涨跌预测

平安银行涨跌预测
数据介绍:通过开源的API获取到平安银行的股票132天的指数数据。
实验目的:根据前50天的历史数据,预测当天指数的涨跌。
在这里插入图片描述
获取数据的主体代码为下


#设置token,是一种权限设置
token='*******************************'#用你自己的token
#ts.set_token(token)
pro=ts.pro_api(token)#ts为开源金融API
#获取当前上市的股票代码,简称,等各类数据
basic=pro.stock_basic(list_status='L')#L是上市
#查看前五行数据
# a=basic.head(5)
# print(a)
#获取平安银行日行情数据
pa=pro.daily(ts_code='000001.SZ', start_date='20190101',end_date='20190720')
# print(type(pa))
def insert_csv(datas):
    df = pd.DataFrame(datas)
    file_name = '平安银行'
    df.to_csv('{}.csv'.format(file_name),encoding = "GBK")
insert_csv(pa)
    '''有可能出现写入csv文件,出现编码错误写入不了,可以修改编码:改成 gb18030编码。
如果要插入的数据字段不确定,可以进行追加的方式进行插入,追加插入必须要添加一个参数  modal = “a”'''

数据加载与数据预处理

data = pd.read_csv('data/平安银行.csv', encoding='gbk', parse_dates=[0], index_col=0)
data.sort_index(0, ascending=True, inplace=True)
dayfeature = 50#选取50天数据
featurenum = 5 * dayfeature#选取的5个特征*天数
x = np.zeros((data.shape[0] - dayfeature, featurenum + 1))#记录50天的5个特征值
y = np.zeros((data.shape[0] - dayfeature))#记录涨或跌

data.shape[0]-dayfeature意思是因为我们要用50天数据做训练,对于条目为132条的数据,只有82条数据是有前50天的数据来做训练的,所有训练集的大小就是132-50,对于每一条数据,特征是前50天的所有特征数据,即50*5,+1是将当天的开盘价引入作为一条特征数据

for i in range(0, data.shape[0] - dayfeature):
    x[i, 0:featurenum] = np.array(data[i:i + dayfeature] \
                                      [[u'open', u'high', u'low', u'close', u'vol']]).reshape((1, featurenum))
    x[i, featurenum] = data.ix[i + dayfeature][u'open']

for i in range(0, data.shape[0] - dayfeature):
    if data.ix[i + dayfeature][u'close'] >= data.ix[i + dayfeature][u'open']:
        y[i] = 1#1为涨
    else:
        y[i] = 0#0为跌

创建SVM并进行交叉验证

clf = svm.SVC(kernel='rbf')
result = []
for i in range(5):#这里是5折
    x_train, x_test, y_train, y_test = \
        train_test_split(x, y, test_size=0.2)
    #x和y的训练集和测试集,切分成80-20%
    clf.fit(x_train, y_train)#开始训练
    result.append(np.mean(y_test == clf.predict(x_test)))
    #将预测数据和测试集的验证数据对比
print("svm classifier accuacy:")
print(result)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值