使用决策树预测大盘指数

  • 在和坛友们经过友好讨论以后,我认为时间对于预测大盘来说确实是一个不可忽视的信息,粗暴地交叉验证获得的准确率,以及依靠这个准确率进行的调参,很容易过拟合。
  • 以及,我之前发现一个问题,如果单纯地把30天后的涨跌算作大盘指数涨跌,很容易让模型拟合噪音,于是我设定了10%的阈值,高于这个阈值的时候才认为大盘在涨,低于这个阈值的时候才认为大盘在跌。当然,更好的办法是使用mean in 30 days来作为指数涨跌的依据。不过个人觉得设定阈值已经足够表现大盘了。
  • 于是我熬夜改完了代码,发现这样一件事,决策树对于大盘的预测很稳健性很差。之前的帖子说决策树相对比较有效一定是过拟合了……嗯。
  • 还有一点,决策树认为有一些因子重要性为0,也有可能是我们选取数据的时候,没选取到足够预测大盘涨跌的有效数据。

  • import numpy as np
    import pandas as pd
    from CAL.PyCAL import Date
    from CAL.PyCAL import Calendar
    from CAL.PyCAL import BizDayConvention
    from sklearn.tree import DecisionTreeClassifier
    import seaborn as sns
    import talib

    又是处理数据……头疼

    def max_arr(arr):
    2
        try:
    3
            se=talib.MAX(np.array(arr),30)
    4
        except:
    5
            se=np.array([np.nan]*len(arr))
    6
        return se    
    7
    def min_arr(arr):
    8
        try:
    9
            se=talib.MIN(np.array(arr),30)
    10
        except:
    11
            se=np.array([np.nan]*len(arr))
    12
        return se
    13
    fields = ['tradeDate','closeIndex', 'highestIndex','lowestIndex', 'turnoverVol','CHG','CHGPct']
    14
    stock = '000300'
    15
    #tradeDate是交易日、closeIndex是收盘指数、highe
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
波士顿房价数据集是一个经典的回归问题,可以使用决策树算法进行预测。 理论推导: 1. 数据集:波士顿房价数据集包含506个样本,每个样本有13个特征,其中包括城镇犯罪率、一氧化氮浓度、住宅平均房间数等。目标是预测房价中位数。 2. 划分训练集和测试集:通常将数据集分为训练集和测试集两部分,用于训练模型和评估模型性能。 3. 决策树决策树是一种基于树结构的分类和回归算法,能够对数据进行划分和归纳。决策树的节点表示一个特征,分支表示特征的取值,叶子节点表示分类或回归结果。 4. 构建决策树使用波士顿房价数据集训练决策树模型,选择一个特征作为根节点,将数据集根据该特征分为不同的子集,对每个子集递归地选择下一个特征,直到满足终止条件。在分类问题中,终止条件通常是达到预定深度、样本数量小于某个阈值或者每个叶子节点都属于同一类别。在回归问题中,终止条件通常是达到预定深度、样本数量小于某个阈值或者每个叶子节点的误差小于某个阈值。 5. 预测房价:使用训练好的决策树模型对测试集进行预测,将每个测试样本输入决策树,沿着树结构进行遍历,最终到达叶子节点,该节点的预测值即为模型对该样本的预测结果。 6. 评估模型性能:使用评价指标如均方误差(MSE)或均方根误差(RMSE)评估模型的性能,指标值越低,模型性能越好。 代码实现: 以下是使用Python实现决策树预测波士顿房价的示例代码: ```python from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeRegressor from sklearn.metrics import mean_squared_error # 加载数据集 boston = load_boston() # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42) # 构建决策树模型 model = DecisionTreeRegressor(max_depth=3, random_state=42) model.fit(X_train, y_train) # 预测测试集 y_pred = model.predict(X_test) # 评估模型性能 mse = mean_squared_error(y_test, y_pred) rmse = np.sqrt(mse) print('RMSE:', rmse) ``` 在上述代码中,使用`load_boston()`函数加载波士顿房价数据集,使用`train_test_split()`函数划分训练集和测试集。使用`DecisionTreeRegressor`类构建决策树模型,指定`max_depth`参数为3表示树的深度不超过3层,使用`fit()`方法训练模型。使用`predict()`方法对测试集进行预测使用`mean_squared_error()`函数计算均方误差,最终输出均方根误差值作为模型性能的评价指标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值