没必要在这里混为一谈
train_X, test_X, train_y, test_y = train_test_split(X, y, train_size = 0.5, test_size = 0.5, shuffle=True)
根据 https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html 的帮助
shuffle bool, 默认为 true
是否在分割前对数据进行洗牌。如果 shuffle=False 则 stratify 必须为 None。
在拆分之前对数据进行洗牌,也就是说,测试中的一些示例将包含在训练中。
总的来说,我很喜欢这篇文章,它表明在交易中实施和使用人工智能是非常容易的。
sklearn.model_selection.train_test_split — scikit-learn 0.23.2 documentation
- scikit-learn.org
*arrays , **options ¶ Quick utility that wraps input validation and and application to input data into a single call for splitting (and optionally subsampling) data in a oneliner. Parameters *arrays Allowed inputs are lists, numpy arrays, scipy-sparse matrices or pandas dataframes. test_size If float, should be between 0.0 and 1.0 and represent...
你能做文章中的最后一张图,但不混合吗?
我想验证效果会变差,而对未知数据的测试效果可能会有所改善。
我想验证效果会变差,而对未知数据的测试效果可能会有所改善。
elibrarius:
没必要在这里搅和
根据帮助 https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html
总的来说,我喜欢这篇文章,它表明在交易中实施和使用人工智能非常容易。
我这样做的目的是让样本更均匀一些。如果不混合,测试结果会更糟,但对新数据几乎没有影响。我稍后会举例说明。
这就是我不明白的地方:
if dataset['close'][i] >= (dataset['close'][i + rand]): labels.append(1.0) elif dataset['close'][i] <= (dataset['close'][i + rand]): labels.append(0.0) else: labels.append(0.0)
永远不会起作用的条件用红色标出。
Stanislav Korotky:
这就是我不明白的地方:
永远不会起作用的条件用红色标出。
这里没有任何问题,我已经更改了条件,但仍然有伪影。
非常有趣的作品!感谢作者。
Stanislav Korotky:
有一个问题与这篇文章有关,不是直接相关,而是通过 CatBoost 依赖关系间接相关。
谁能用手指解释一下 CatBoost(或更广义的基于直方图的梯度提升决策树)是如何根据直方图按特征(输入变量)进行分离的?很明显,每个分区(直方图条)都要计算统计数据:数值在分区范围内的向量的总点击数,以及它们属于输出类别(本例中为两个)的细分情况。有了包含这些统计数据的直方图,如何选择创建下一级树的分部呢?
树的构建是相互独立的,然后在树叶中进行计数(通过未量化的预测因子进行枚举),从而减少梯度误差。
在为树的构建和树的分割选择预测因子 时,会使用随机系数,这在理论上可以提高完整性(召回)并防止过度训练。
Stanislav Korotky:
有一个问题与这篇文章有关,不是直接相关,而是通过 CatBoost 依赖关系间接相关。
谁能用手指解释一下 CatBoost(或更广义的基于直方图的梯度提升决策树)是如何根据直方图按特征(输入变量)进行分离的?很明显,每个分区(直方图条)都要计算统计数据:数值在分区范围内的向量的总点击数,以及它们属于输出类别(本例中为两个)的细分情况。有了包含这些统计数据的直方图,如何选择创建下一级树的分部呢?
最好请教开发人员
新文章 梯度提升(CatBoost)在交易系统开发中的应用. 初级的方法已发布:
在 Python 中训练 CatBoost 分类器,并将模型导出到mql5,以及解析模型参数和自定义策略测试程序。Python 语言和 MetaTrader 5 库用于准备数据和训练模型。
编译后的 EA 可以在标准的 MetaTrader 5 策略测试器中进行测试。选择一个合适的时间框架(必须与模型训练中使用的时间框架相匹配)和输入参数look_back 和 MA_period,这也应该与 Python 程序中的参数相匹配。让我们在训练期间检查模型(培训+验证子样本):
模型的效果(训练+验证子样本)
如果我们将结果与在定制测试器中获得的结果进行比较,这些结果是相同的,除了一些点差引起的偏差。现在,让我们从年初开始,用全新的数据来测试这个模型:
新数据的模型性能
该模型在新数据上的表现明显较差。如此糟糕的结果与客观原因有关,我将进一步阐述。
作者:Maxim Dmitrievsky