文章 "机器学习和交易中的元模型:交易订单的原始时序" - 页 13

 
Maxim Dmitrievsky #:
其中 x[0] 是零类的概率,而模型给出的是两类的概率。也就是说,如果零类的概率小于 0.5,则首先预测该类。所以 True == 1,反之亦然。因此,不存在错误。

嗯,我还没听说过这样的事,概率 可以 从 0 到 1,大于 0.5 - "1",否则 "0 "就是二元分类的 默认值 。虽然译者的翻译很奇怪:
"

  • 一个对象是一维 numpy.ndarray,包含每个类别的概率。

"

但是,如何获得 "1 "类的概率呢?一维数组中不可能有每个类别的单独概率,否则我就不明白了.....。

 
Maxim Dmitrievsky #:
也许在你的数据集中,标签是颠倒的

1 "是正确的交易/有利可图/好的。应该反过来吗?

 
Aleksey Vyazmikin #:

"1 "是正确的交易/有利可图的/好的。应该是其他情况吗?

不,我指的是你数据集中的买入和卖出,什么是 0,什么是 1。买入或卖出。
 
Aleksey Vyazmikin #:

嗯,我还没听说过有这种概率 可以 从 0 到 1,超过 0.5 - "1",否则在二进制分类中默认为 "0"。虽然译者翻译得很奇怪:
"

  • 一个对象是一维 numpy.ndarray,包含每个类别的概率。

"

但是,如何获得 "1 "类的概率呢?在一维数组中不可能有每个类别的单独概率,否则我就不明白了.....。

如果类别 0 的概率 < 0.5,则预测类别 1。这段代码只是将概率转换成类标签,供测试人员使用。这里一切正常。
 
Maxim Dmitrievsky #:
不,我指的是数据集中的买和卖,什么是 0,什么是 1。买入或卖出。

财务结果已经有了一个标记。在收盘一栏,我写的是交易结果。也就是说,对于训练而言,买入或卖出并不重要。

Maxim Dmitrievsky#:
如果类别 0 的概率 < 0.5,则预测类别 1。这段代码只是简单地将概率转换回类标签,供测试者使用。这里一切正常。

我不想让自己听起来像个强迫症患者,但还是有三个选项:
1。我一直都做错了,我以为在 CatBoost 中估算的是类 "1 "的概率。
2. 我不明白你的代码。
3.您认为小于 0.5 的概率应归类为 "1 "是错误的。

 
Aleksey Vyazmikin #:

这里的加价已经基于财务结果。在 "结束 "一栏,我写的是交易的结果。也就是说,对于培训来说,买入或卖出并不重要。

我不想多管闲事,但还是有三个选择:
1.
2. 我不明白您的代码。
3.您认为小于 0.5 的概率应归类为 "1 "是错误的。

我不明白,"收盘价 "一栏应该是收盘价。

总概率总是等于 1。如果一个类别的概率小于 0.5,那么预测的就是另一个类别。

 
Maxim Dmitrievsky #:

我不明白,Close 栏应该是收盘价。

请看我附上的代码。可能会更清楚。我没有在每个条形图上进行分类。

Maxim Dmitrievsky#

总概率总是等于 1。如果其中一个类别的概率小于 0.5,则预测另一个类别。

在代码中,如果概率为 0.4,则得到类别 "1"。为什么会这样?

 
Aleksey Vyazmikin #:

请看我附上的代码。可能会更清楚。我没有在每个条形图上进行分类。

在代码中,概率为 0.4 时,等级为 "1"。为什么?

我没有 rar 文件,能给我一个压缩数据集吗?

因为 1 类概率是 0.6。

一般来说,该算法应该完全按照那里的方法接受数据。
 
Maxim Dmitrievsky #:

能给我一个压缩数据集吗? 我没有 rar 文件。

我可以下载。虽然命令行支持 mac....

Maxim Dmitrievsky#:
因为类 1 的概率是 0.6。
predict_proba p
[[0.74864123 0.25135877]
 [0.81097595 0.18902405]
 [0.81477042 0.18522958]
 ...
 [0.83347862 0.16652138]
 [0.84273186 0.15726814]
 [0.84617344 0.15382656]]

直到打印出来我才明白--控制台版本在这方面存在差异。

后来一切都明白了,我注释掉了翻转的代码,只留下标记的逻辑。

#//-------Restoring previously reversed marks 
            #if  pred_meta>0.5:pred_meta=0
            #else :pred_meta=1
            #if  pred>0.5:pred=0
            #else :pred=1

#//------- 进行重新分区并计算余额
            if pred_meta==1:#Мета  модель детектировала примеры как класс "1"
                if pred < 0.5 and Target_100<0.0:
                    meta_labels[i] = 1 
                if pred < 0.5 and Target_100>0.0:
                    meta_labels[i] = 0 
                if pred >= 0.5 and Target_100>0.0:
                    meta_labels[i] = 1
                    report.append(report[-1]+Target_100)
                if pred >= 0.5 and Target_100<0.0:
                    meta_labels[i] = 0
                    report.append(report[-1]+Target_100)
            if pred_meta==0:#Мета  модель детектировала примеры как класс "0"
                if pred < 0.5 and Target_100<0.0:
                    meta_labels[i] = 1 
                if pred < 0.5 and Target_100>0.0:
                    meta_labels[i] = 0 
                if pred >= 0.5 and Target_100>0.0:
                    meta_labels[i] = 1                    
                if pred >= 0.5 and Target_100<0.0:
                    meta_labels[i] = 0
 
Maxim Dmitrievsky #:
能否提供压缩数据集?

链接