我已经将以Scikit训练的GradientBoosterRégressionPree(GBRT)模型以两种不同的方式集成到一个更大的程序中:

  • for iOS,使用 CoreMLcoremltools

  • for Linux,使用pickle并调用python脚本进行分类 .

预测有时会有所不同,但情况并非如此 .

请注意,这是一个两类问题:输出为0或1 .

对于销售的解释,我将对两个样本进行fucus:样本3321和样本3330:3321预测为两者中的0级,但预测3330在iOS上为1,在Linux / python版本上为0 .

这是我试图解决的问题:

阅读能力

由于我使用的是GBRT分类器,我想我会查看与每个类相关的概率 . 它们在两个样本中都不同:

在iOS版本中:

  • 样本3321,0级,概率[0.00098,0.99901]

  • 样本3330,1级,概率[0.57140,0.42859]

在python中:

  • 样本3321 0级概率[0.000724739274,0.999975261]

  • 样本3330 0级概率[0.45024302,0.54975698]

显然,那些是不同的 .

更改分类器

然后我尝试使用概率放入SVM分类器(在GBRT之后得到第二好的结果):也不同(预测和概率)

特征值

然后我想也许特征值可能不同(从swift发送到python脚本时有所改变),所以我在调用预测器之前在两种情况下都打印了特征向量:值与最后一个数字相同 .

这个问题

知道为什么会这样,或者是否正常?