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

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

刚开始接触金融量化投资这块。导师让做一个随机森林的模型,数据是老师给的大概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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)