如何解决从Booster的predict函数预测类标签
我有一个二进制分类问题,该问题在Python中的默认参数上得到了很好的解决(训练和测试的准确性约为90%)。我的项目的范围是在Python中训练一些“模型”,这些模型以后可以在我正在编写的R库中重新使用。这是通过现在的Boosters bst.save()和bst.load()完成的。到目前为止,一切都很好。
我可以将增强器保存在Python中,然后在R中重新加载。问题是,在Python中,我有R中缺少的predict_proba()函数!
那么自然地,我尝试了预报()函数,现在只给我0.8以上的数字?我到底应该怎么做?如何从predict()的结果中获取预测的标签(0或1)?我只想为R中的bst.predict(booster,data)方法中传递的数据包含一个包含预测0或1的数组。
当然,我知道我可能错过了一些重要的东西。这就是为什么我寻求您的帮助。
第一张图,与第二张图中的predict_proba()相比,predict()中的绘制结果。
解决方法
最初使用Python训练模型时,您必须将objective='multi:softprob',num_class=2
放入模型定义中。这将为Booster中的每个类提供一个概率。换句话说,请从文档中检查此内容:
multi:softprob与softmax相同,但是输出ndata * nclass的向量,可以将其进一步整形为ndata,nclass矩阵。结果包含属于每个类别的每个数据点的预测概率。
当然,当在R中使用经过Python训练的模型时,请不要忘记以与Python中相同的格式(顺序,...)传递数据。当您使用booster类时,SKLearn界面中缺少许多帮助器,因此不会重复检查是否按相同顺序传递列和所有内容。我只是按字母顺序排序列。某种语言(例如C),并在“测试”模型时在R中对其重新排序
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。