淘汰兔 2019-03-01 14:38 采纳率: 0%
浏览 1532

随机森林分类应用在预测外汇涨跌上,我做的模型为啥精度这么奇怪,求大神给解释下

刚开始接触金融量化投资这块。导师让做一个随机森林的模型,数据是老师给的大概6000条的外汇交易数据(包含开盘、收盘,最高,最低价),利用这4个特征算出来另外11个特征,并且根据开盘和收盘价给数据打好了一列标签也就是Y。
(交易日期 开盘价 最高价 最低价 收盘价 MACD MACDsignal MACDhist MA10_talib RSI k d j upper middle lower div label)这些是所有的列名,相当于输入特征有15个,输出为y(label),y是判断1或者0或者-1;

随机森林部分代码如下:

from sklearn.ensemble import RandomForestClassifier
X_train,X_test,Y_train,Y_test= train_test_split(x,y,test_size=0.3,random_state=1)
rf = RandomForestClassifier(n_estimators=100, max_depth=20,bootstrap=True,random_state=1)#基分类器
rf.fit(X_train, Y_train)
print('Training set score:{:.3f}'.format(rf.score(X_train,Y_train)))
print('Test set score:{:.3f}'.format(rf.score(X_test,Y_test)))

输出结果如下:Training set score:1.000
Test set score:0.998

这结果搞得我有点怕。。。。。求大神给讲讲

  • 写回答

1条回答 默认 最新

  • tomorrowpan 2019-03-14 16:21
    关注

    我觉得出现这个结果的原因可能有两个:
    1.数据质量比较好,这些数据可能都是前人整理清洗过的数据,用来做基础练习用的;
    2.第二个问题我觉得是值得你注意的,在数据集划分阶段你只做了一次70%/30%的随机抽样,实验结果的偶然性和误差肯定较大,模型泛化能力可能较差。现在大家在做机器学习model selection的时候是常常会用K-fold交叉验证的方法,具体原理你可以去百度,这样结果更具说服力。
    你可以在你的基础上加上这些代码,简单看一下,score平均都很高的话说明就是第一种情况:
    from sklearn.model_selection import cross_val_score
    scores = cross_val_score(rf, x, y, cv=10) #10折交叉验证
    print(scores)

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制