逻辑回归预测事件发生的概率_用逻辑回归LR预测股票涨跌

我们接上文,先用LR预测一下某只股票的涨跌,看看效果怎样。

上文链接:

昂刺鱼:用python做股票数据分析(兴趣篇)​zhuanlan.zhihu.com


首先我们还是导入需要的库,并载入某只股票的交易数据。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split #分割训练集和测试集
from sklearn.linear_model import LogisticRegression 
import matplotlib.pyplot as plt

df_ori=pd.read_csv('./stock_data/000001.csv')  #载入原始数据

接着,我们还是用上文中的函数生成一些移动平均数:

def make_ma(i,j,df,price='close'):
    df_out=pd.DataFrame()
    for _ in range(i,j+1):
        df_out['ma_'+str(_)]=df_ori[price].rolling(_).mean()
    df_out['res']=np.where(df_ori['change']>0,1,0)
    return df_out

df_done=make_ma(3,200,df_ori)   # 生成3日到200日的移动平均线作为训练特征
df_done=df_done[1000:] # 考虑到上市之初易出异常数据,故丢弃股票上市前1000个交易日的数据,上市之初的行为我们后面有机会再分析

好了,现在df_done就是我们处理好的数据,然后我们再用train_test_split函数,将df_done分成train_x,test_x,train_y,test_y四个部分,其中测试集占比0.3

col=df_done.columns[0:-1]
train_x,test_x,train_y,test_y=train_test_split(df_done[col],df_done['res'],test_size=0.3)

最后我们使用sklearn提供的LR模型进行预测打分。

lr=LogisticRegression(solver='liblinear')
lr.fit(train_x,train_y)
predict=lr.predict(test_x)
print(lr.score(test_x,test_y))

LogisticRegression模型的参数网上到处都说,不一一列举。
结果显示,分数接近于0.55-0.6,也就是有接近60%的胜率,对金融预测来说,这已经是非常令人兴奋的事情了,何况这仅仅只是一个最最粗糙的单一模型而已。事实是不是真的如此呢,有没有哪里是有问题的?我们下回分解。
下一篇,我们还会用svm来预测同样的数据,并比较两者的区别和联系,为后面优化我们的模型提供一些依据。

获取所有A股股票日线数据,关注公__号,回复‘stockdata‘即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值