2024-05-19 12:35:39 发布
网友
我有一个用Python训练的XGBoost二进制分类器模型。在
我希望在不同的脚本环境(MQL4)中,使用纯数学操作,而不使用XGBoost库(.predict),从这个模型生成新的输入数据的输出。在
有人能帮我解释一下公式和/或算法吗?在
经过一些逆向工程,我发现了如何;一旦模型得到训练,首先将模型转储到文本文件中:
num_round = 3 bst = xgb.train( param, dtrain, num_round, watchlist ) bst.dump_model('D:/Python/classifyproduct.raw.txt')
然后,对于每个助推器,找到输入特征集的叶概率。将所有这些概率相加,在我们的例子中,输入二元逻辑函数:
这是经过训练的xgboost模型对给定输入特征集的输出概率。作为一个示例,我的示例转储(包含2个输入(a和b)文本文件是:
booster[0]: 0:[b<-1] yes=1,no=2,missing=1 1:[a<0] yes=3,no=4,missing=3 3:[a<-2] yes=7,no=8,missing=7 7:leaf=0.522581 8:[b<-3] yes=13,no=14,missing=13 13:leaf=0.428571 14:leaf=-0.333333 4:leaf=-0.54 2:[a<2] yes=5,no=6,missing=5 5:[a<-8] yes=9,no=10,missing=9 9:leaf=-0.12 10:leaf=-0.56129 6:[b<2] yes=11,no=12,missing=11 11:leaf=-0.495652 12:[a<4] yes=15,no=16,missing=15 15:[b<7] yes=17,no=18,missing=17 17:leaf=-0.333333 18:leaf=0.333333 16:leaf=0.456 booster[1]: 0:[b<-1] yes=1,no=2,missing=1 1:[a<0] yes=3,no=4,missing=3 3:[b<-3] yes=7,no=8,missing=7 7:leaf=0.418665 8:[a<-3] yes=13,no=14,missing=13 13:leaf=0.334676 14:leaf=-0.282568 4:leaf=-0.424174 2:[a<2] yes=5,no=6,missing=5 5:[b<0] yes=9,no=10,missing=9 9:leaf=-0.048659 10:leaf=-0.445149 6:[b<2] yes=11,no=12,missing=11 11:leaf=-0.394495 12:[a<5] yes=15,no=16,missing=15 15:[b<7] yes=17,no=18,missing=17 17:leaf=-0.330064 18:leaf=0.333063 16:leaf=0.392826 booster[2]: 0:[b<-1] yes=1,no=2,missing=1 1:[a<0] yes=3,no=4,missing=3 3:[b<-3] yes=7,no=8,missing=7 7:leaf=0.356906 8:[a<-3] yes=13,no=14,missing=13 13:leaf=0.289085 14:leaf=-0.245992 4:leaf=-0.363819 2:[a<4] yes=5,no=6,missing=5 5:[a<2] yes=9,no=10,missing=9 9:[b<0] yes=15,no=16,missing=15 15:leaf=-0.0403689 16:leaf=-0.381402 10:[b<7] yes=17,no=18,missing=17 17:leaf=-0.307704 18:leaf=0.239974 6:[b<2] yes=11,no=12,missing=11 11:leaf=-0.308265 12:leaf=0.302142
我有两个特征作为输入。假设我们有[4,9]作为输入。我们可以将助推器概率计算为:
booster0 : 0.456 booster1 : 0.333063 booster2 : 0.302142 sum = 1.091205 1/(1+exp(-sum)) = 0.748608563
就这样。在
经过一些逆向工程,我发现了如何;一旦模型得到训练,首先将模型转储到文本文件中:
然后,对于每个助推器,找到输入特征集的叶概率。将所有这些概率相加,在我们的例子中,输入二元逻辑函数:
^{pr2}$这是经过训练的xgboost模型对给定输入特征集的输出概率。作为一个示例,我的示例转储(包含2个输入(a和b)文本文件是:
我有两个特征作为输入。假设我们有[4,9]作为输入。我们可以将助推器概率计算为:
就这样。在
相关问题 更多 >
编程相关推荐